package com.chipmunk.test; import java.io.BufferedReader; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; import net.sourceforge.pinyin4j.PinyinHelper; /** * 更改项目中的中文图片,中文文件等中文路径 * @author chipmunk * @date 2018年3月14日 下午6:40:15 */ public class ChineseToPinyin { public static String getPinyin(String t){ char[]cs = t.toCharArray(); StringBuffer sb = new StringBuffer(); for (char c : cs) { String[]s=PinyinHelper.toHanyuPinyinStringArray(c); if (s!=null) { String u = s[0]; if ("行".equals(c+"")) { u = s[1]; }else if ("重".equals(c+"")) { u = s[1]; } u = u.substring(0,u.length()-1); sb.append(u); } } return sb.toString(); } public static String toPinyin(String t){ char[]cs = t.toCharArray(); StringBuffer sb = new StringBuffer(); for (char c : cs) { String[]s=PinyinHelper.toHanyuPinyinStringArray(c); if (s!=null) { String u = s[0]; if ("行".equals(c+"")) { u = s[1]; }else if ("重".equals(c+"")) { u = s[1]; }else { if (u.startsWith("lu:")) { u = u.replaceFirst("lu:", "lv"); // u="lv"; } } u = u.substring(0,u.length()-1); sb.append(u); }else { sb.append(c); } } return sb.toString(); } public static boolean isChinese(String text) { String regex = "([\u4E00-\u9FA5])"; int count1 = text.length(); String text2 = text.replaceAll(regex, ""); int count2 = text2.length(); return count1>count2; } static Map<String, String> ZHONGWEN_PINYIN = new LinkedHashMap<String, String>(); public static void traverseDir(File dir){ File[]files = dir.listFiles(); for (File file : files) { if (file.isDirectory()) { traverseDir(file); }else{ String filename = file.getName(); if (isChinese(filename)) { //去掉空格 String filename2 = filename.replaceAll(" ", ""); String pinyin = toPinyin(filename2); ZHONGWEN_PINYIN.put(filename,pinyin); File file_new = new File(file.getParentFile(),pinyin); file.renameTo(file_new); } } } } public static List<String> readLine(InputStream in, String charset) throws Exception { InputStreamReader isr = new InputStreamReader(in, charset); BufferedReader br = new BufferedReader(isr); List<String> list = new ArrayList<String>(); String s; while ((s = br.readLine()) != null) { String t = StringUtil.toString(s, null); if (t != null) { list.add(t); } } br.close(); isr.close(); in.close(); return list; } public static List<String> readLine(File file, String charset) throws Exception { FileInputStream in = new FileInputStream(file); return readLine(in, charset); } public static void write(File file, String text, String charset) throws Exception { FileOutputStream out = new FileOutputStream(file); byte[] bytes = text.getBytes(charset);//GBK,"UTF-8" out.write(bytes); out.close(); out.flush(); } public static boolean find(String word,String text){ if (StringUtil.isBlank(word)) { return false; } if (StringUtil.isBlank(text)) { return false; } char[]w = word.toCharArray(); char[]t = text.toCharArray(); int size = w.length; // List<String> list = new ArrayList<String>(); for (int i = 0; i < t.length; i++) { if(w[0]==t[i]){ if(i+size-1<t.length){ boolean bool = true; for (int j = 1; j < size; j++) { bool&=(w[j]==t[i+j]); if(!bool){ break; } } if (bool) { return true; } } } } return false; } /** * 查找text中是否包含的list的元素,返回包含的元素 * @Date: 2013-6-27下午02:57:28 * @Description: Set<String> * @param list * @param text * @return */ public static Set<String> seek(Collection<String> col,String text){ Set<String> set = new HashSet<String>(); for (String word : col) { boolean bool = find(word, text); if(bool){ set.add(word); } } return set; } /** * 更改中文路径 * @param path_dir_image * @param path_dir_html */ public static void changeChinesePath(String path_dir_image,String path_dir_html) { // System.out.println(toPinyin("20李白(1)诗人.jpg")); File dir_img = new File(path_dir_image); traverseDir(dir_img); Set<String> keys = ZHONGWEN_PINYIN.keySet(); // for (String k : keys) { // System.out.println(k+"="+ZHONGWEN_PINYIN.get(k)); // } try { File dir = new File(path_dir_html); File[]files = dir.listFiles(new FileFilter() { @Override public boolean accept(File f) { if (f.isFile()&&f.getName().endsWith(".html")) { return true; }else { return false; } } }); for (File file : files) { System.out.println(file.getName()); StringBuffer sb = new StringBuffer(); List<String> htmlList = readLine(file, "UTF-8"); for (String s : htmlList) { Set<String> filenames = seek(keys, s); // for (String ff : filenames) { // System.out.println(ff); // } if (filenames.size()>0) { for (String ss : filenames) { //处理括弧(1) String sss = ss.replaceAll("\\(","\\\\\\(").replaceAll("\\)","\\\\\\)"); s=s.replaceAll(sss, ZHONGWEN_PINYIN.get(ss)); System.out.println(ss+"=="+ZHONGWEN_PINYIN.get(ss)); System.out.println(s); } } sb.append(s); sb.append("\n"); } write(file, sb.toString(), "UTF-8"); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { String path_dir_html = "E:\\abc\\m\\pp"; String path_dir_image = "E:\\abc\\m\\pp\\img"; changeChinesePath(path_dir_image, path_dir_html); } }
<audio controls="controls" style="display: none;"></audio>
相关推荐
在前端开发过程中,我们经常需要对CSS文件中的图片路径进行批量替换,特别是在迁移项目到新的服务器或者更改项目结构时。这个任务涉及到HTML、JS和CSS文件中的资源引用路径的更新,确保所有链接都能正确指向新的位置...
首先,我们需要理解标题和描述中提到的关键点:上传图片、显示上传路径以及修改图片名称。这些功能通常涉及到前端界面设计、后端服务器处理以及数据库存储。 1. **前端界面**: - 用户交互:在前端,我们需要提供...
在JavaWeb实际项目开发中,上传文件和图片是一项常见的需求,尤其在构建用户交互丰富的网站时,例如用户头像上传、商品图片展示等。这里我们将深入探讨如何在JavaWeb环境中实现文件图片的上传功能,主要涉及到的技术...
在HTML页面中,链接资源(如图片、CSS样式表、JavaScript文件等)时,我们可以使用绝对路径和相对路径。本文将深入探讨“html相对路径问题”以及如何在HTML中正确使用图片标签。 **1. HTML相对路径** 相对路径是相...
综上所述,".net百度编辑器图片路径修改为服务器路径"这一需求涵盖的内容广泛,包括文件上传、服务器路径处理、图片处理、安全策略以及性能优化等多个方面。在实际开发中,需要结合具体的业务需求和技术栈来设计和...
在提供的文件列表中,“说明_Readme.html”可能是详细操作指南,而“SetProfilePath”可能是一个脚本或工具,用于自动化修改桌面文件保存路径的过程。如果使用这样的工具,务必先阅读Readme文件,了解其使用方法和...
在这个Eclipse工程实例中,我们将探讨如何使用`jspsmartupload`来实现文件和图片的上传,同时确保文件保存路径中的中文字符不会出现乱码问题。 首先,`jspsmartupload`库解决了文件上传过程中的一些常见问题,如...
描述中提到的“简单实用的文件路径选择框”,是指一种设计简洁、易于使用的界面元素,允许用户浏览和选择他们计算机上的文件夹或文件。它通常包含一个文本输入框显示当前选定的路径,以及一个按钮来打开一个文件...
在许多操作系统和编程环境中,尤其是旧版本或未正确配置的情况下,中文字符可能无法正确处理,尤其是在文件路径中。Nexus作为一款英文为主的工具,可能存在对非ASCII字符(如中文)支持不足的状况。这可能导致在创建...
没有去修改create-react-app默认的配置文件 执行npm start 一切正常, 但是 npm run ...手动更改index.html的路径之后又报静态资源引入错误 报错 解决方案 解决: 在package.json下面增加”homepage”: “.”。
当我们在HTML或者JSP文件中使用中文路径引用图片、链接或者其他资源时,如 `中文图片.jpg">` 或者 `中文.jsp">中文文件名</a>`,或者在URL中直接使用中文路径,如 `http://127.0.0.1:8080/中文.扩展名`,可能会遇到...
在IT行业中,Flying Saucer是一个非常流行的库,它允许开发者将HTML内容转换为PDF、XPS等...通过修改源码并重新打包,我们可以定制一个支持中文的Flying Saucer版本,从而在各种项目中更顺利地处理中文内容的转换需求。
本文将围绕Web项目中的路径要求进行详细阐述,包括但不限于项目的目录结构、路径配置方式以及如何在不同环境中正确配置路径等。 #### 一、Web项目的基本目录结构 Web项目的目录结构通常包含以下几个关键部分: 1....
ITextRenderer 的 setDocument() 方法接收 HTML 文件路径作为参数,将其加载到渲染器中。调用 layout() 方法布局页面,然后调用 createPDF() 方法将解析后的 HTML 内容写入到已打开的 PDF 文档中。最后,我们关闭...
本压缩包中的"bat把目录下的文件按修改时间倒序列出来_生成超链接放到html文件中.bat"文件就是一个批处理脚本,它的主要功能是将指定目录下的所有文件按照修改时间的倒序排列,并将这些文件的绝对路径转换为超链接,...
在这个项目中,"源码"文件夹可能包含了HTML文件,这些文件使用各种标签来创建页面元素,如标题、段落、图像和链接。例如,`<h1>`用于大标题,`<p>`用于段落,`<img>`用于插入图片,`<a>`用于创建链接。理解并熟练...
- 内部样式表:将CSS放在`<style>`标签内,位于HTML文件的`<head>`部分,适用于小型项目或页面特定样式。 - 外部样式表:通过`<link rel="stylesheet" type="text/css" href="path/to/your.css">`引入外部CSS文件...
在处理中文内容时,`Flyingsaucer`可能面临一些挑战,但通过正确的配置,我们可以使其成功地处理中文字符,而无需修改源代码。 `Flyingsaucer`的核心组件是`ITextRenderer`,它基于iText库来实现PDF生成。以下是...
获取Java Web项目中的WEBROOT或WEB-INF物理路径,是开发过程中的常见操作,通常通过Servlet API的`ServletContext`接口实现。理解Web应用的部署结构和正确使用`getRealPath()`方法,对于解决与文件操作相关的问题至...
在图片滚动效果中,JavaScript会接收来自服务器的图片路径,然后动态地创建或修改HTML元素,以实现图片的平滑滚动。 在"leftright.aspx"和"topdown.aspx"这两个文件中,我们可能看到了两种不同方向的滚动实现:左右...