最近因为项目的国际化的需要,需要对整个项目的100来个插件做国际化,这是一件痛苦的事情,因为纯体力劳动。为了省点工作量,想着能不能写个程序批处理了,减少点工作量,于是就有了下面的代码。

1.读取指定的(.java)文件:

复制代码 代码如下:

public static String readFile(String path) throws IOException {

File f = new File(path);

StringBuffer res = new StringBuffer();

String filePathStr = f.getPath();

System.out.println("获取文件的路径:::::::"+filePathStr);

FileInputStream fis = new FileInputStream(f);

InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //以gbk编码打开文本文件

BufferedReader br = new BufferedReader(isr, 8192 * 8);

String line = null;

int linenum = 0;

while((line=br.readLine())!=null) {

linenum ++;

res.append(line+"此处可以添加你自己的字符串处理逻辑"+"\r\n");

}

br.close();

return res.toString();

}

2.读取的文件内容信息写到指定的(.java)文件

复制代码 代码如下:

public static boolean writeFile(String cont, String path) {

try {

File dist = new File(path);

OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(dist),"GBK");

writer.write(cont);

writer.flush();

writer.close();

return true;

} catch (IOException e) {

e.printStackTrace();

return false;

}

}

3.查找指定目录下所有符合条件的.java文件,并更新文件信息

复制代码 代码如下:

/**

* 查找文件

* @param f

* @throws IOException

*/

public static void findFile(File f) throws IOException {

if(f.exists()) {

if(f.isDirectory()) {

for(File fs:f.listFiles(ff)) {

findFile(fs);

}

} else {

updateFile(f);

}

}

}

/**

* 逐行读java文件

* @param f

* @throws IOException

*/

private static void updateFile(File f) throws IOException {

String filePathStr = f.getPath();

System.out.println("开始读取文件的路径:::::::"+filePathStr);

FileInputStream fis = new FileInputStream(f);

InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //以gbk编码打开文本文件

BufferedReader br = new BufferedReader(isr, 8192 * 8);

String line = null;

int linenum = 0;

StringBuffer res = new StringBuffer();

while((line=br.readLine())!=null) {

String updateStr= updateStr(line);

res.append(updateStr+"\r\n");

if(!line.trim().equals(updateStr.trim())) {

linenum ++;

}

}

br.close();

//如果文件有修改,则修改后的文件,覆盖原有文件

if(linenum>0) {

System.out.println("=============================");

System.out.println("filePathStr:"+filePathStr);

System.out.println("文件修改了:"+linenum+"处。");

System.out.println("=============================");

String cont = res.toString();

ReadWriteFile.write(cont, filePathStr);

}

}

/**

* 验证读取的字符串信息

* 和更新字符串信息

* @param str

*/

private static String updateStr(String str) {

//判断字符串是否是需要更新的字符串

boolean isok = filterStr(str);

int strNum = StringValidation.strNum(str, StringValidation.ch);

if(isok || strNum == 0) {

return str;

} else {

String temp = "";

for(int i=1;i<=strNum/2;i++) {

temp += " //$NON-NLS-"+i+"$"; //需要添加的字符

}

str = str+temp;

}

return str;

}

//过滤文件类型

private static FileFilter ff = new FileFilter() {

public boolean accept(File pathname) {

String path = pathname.getName().toLowerCase();

logger.info("FileFilter path::::"+path);

//只匹配 .java 结尾的文件

if (pathname.isDirectory() || path.endsWith(".java")) {

return true;

}

return false;

}

};

/**

* 过滤掉不需要处理的字符串

* @param str

* @return

*/

public static boolean filterStr(String str) {

boolean isok = false;

//过滤字符串

isok = (str.indexOf("import ")>=0)

|| (str.indexOf("package ")>=0)

|| (str.indexOf(" class ")>=0)

|| (str.indexOf("//$NON-NLS")>=0)

|| (str.indexOf("//")==0)

|| (str.indexOf("/*")>=0)

|| (str.indexOf("*")>=0)

|| (str.trim().indexOf("@")==0)

|| (str.indexOf("\"")==-1)

|| ("".equals(str))

|| isCh(str);

return isok;

}

/**

* 验证字符串是否含有中文字符

* @param str

* @return

*/

public static boolean isCh(String str) {

Pattern pa = Pattern.compile("[\u4E00-\u9FA0]");

Matcher m = pa.matcher(str);

boolean isok = m.find();

return isok;

}

总结:当我们拿到一个别人给的需求,先不要急于去处理,先分析,再分析,然后做出最优的解决方案,处理好这项工作。

java 写入指定路径文件_java对指定目录下文件读写操作介绍 | 学步园相关推荐

  1. java未知变量的类型_Java语言中类、变量及方法的声明 | 学步园

    类声明 [ public][ abstract][ final] class NameOfClass [ extends Super][ implements Interfaces] pubilc:声 ...

  2. java转json数组对象_java对象转json、json数组 、xml | 学步园

    JSON-lib这个Java类包用于把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean. 下载地址:http://json-lib.sourceforge.net ...

  3. java 限制输入两位数_Java 控制数字输入、控制输入长度的方法 | 学步园

    问题: Java程序设计中,经常接受数量的组件,那么就必须严格控制租借只接受数字,并且第一个字符不能是0 另外,有些组件需要控制输入长度 然而,Java中并没有专门的数字文本框来专门接受数字 解决方式 ...

  4. java calendar 月 加一_JAVA Calendar设置时间,月份总是加1 | 学步园

    代码: Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH, month-1 ); calendar.set ...

  5. linux 查看目录下文件、查看文件具体内容、查看文件夹大小

    linux 查看目录下文件.查看文件具体内容 查看目录下文件 查看文件具体内容 查看文件夹大小 查看文件夹下各文件大小 查看目录下文件 ls 查看目录下所有文件(不包含隐藏文件) ls -a 查看目录 ...

  6. c# 指定打开某个路径下的CMD_Windows小技巧 批处理文件实现目录下文件批量打包压缩...

    最近整理资料,发现很多 pdf 文档,占用了不少的存储空间,考虑使用 7-zip 进行压缩存储,由于文件比较多,且分散在不同目录下,一个个文件压缩比较繁琐.为了提高效率且,方便后面取用,所有打算捣鼓个 ...

  7. java 过滤器 过滤文件中的文件_Java 使用FileFilter过滤器对文件进行搜索

    FileFilter概述 java.io.FileFilter是一个接口,是File的过滤器. 该接口的对象可以传递给File类的listFiles(FileFilter filter)作为参数,Fi ...

  8. java aio复制文件_java复制文件的4种方式及拷贝文件到另一个目录下的实例代码...

    尽管Java提供了一个可以处理文件的IO操作类. 但是没有一个复制文件的方法. 复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候. 然而有几种方法可以进行Java文件复制操作,下面列举出 ...

  9. python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏。 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小

    python 实现统计ftp服务器指定目录下文件夹数目.文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏. 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小,类 ...

最新文章

  1. 第三篇——第二部分——第三文 配置SQL Server镜像——域环境
  2. 第五人格每天服务器维护多长时间,第五人格:每天玩的时间并不长,大概一天1-5局...
  3. SigmaPlot 12.0 中文版 for Win 专业的科研绘图下载及教材
  4. Mybatis增删改
  5. Java网络编程1---基础
  6. 求字符串里面数字之和
  7. Python联网下载文件
  8. @ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常
  9. 第512章 河系量子计算机,第512章 河系量子计算机
  10. iptables官方文档
  11. python 切换环境_python多环境切换及pyenv使用过程详解
  12. QT表格QTableWidget在win10下纵横表头无分隔线的问题
  13. 基于javaWEB技术的SSM音乐网站设计与实现(含论文+程序设计+PPT答辩)
  14. linux mint 检测网卡驱动,使用linux mint 安装无线网卡驱动
  15. 标准差(standard deviation)和标准误差(standard error)你能解释清楚吗?
  16. CAD-Cass小结(5)————WIN10安装并运行CAD2006及Cass7.0
  17. 视频加水印怎么加?比较简单的方法
  18. 诺,你们要的Python进阶来咯!我还没见过比这全面的!
  19. 7个最好的文件存储网站
  20. 区块链系列课第二讲区块链的核心优势

热门文章

  1. c语言简答程序源代码,C语言简答题答案
  2. slider获取点击 unity_Unity基础 | 70分钟带你轻松入门
  3. 火狐浏览器中文乱码怎么办 Firefox中文乱码解决方法
  4. mysql数据库名长可为64字符,MySQL数据库设计规范
  5. c语言.h文件怎么写,关于C语言中.h文件怎么书写?
  6. Spring-bean的循环依赖以及解决方式___Spring源码初探--Bean的初始化-循环依赖的解决
  7. java 最快平衡几个值_Java 集合框架面试问题集锦
  8. php中cookie存的是什么,PHP中Cookie存在的作用和用法
  9. 计划任务文件 linux,Linux之任务计划
  10. Java 多线程 —— ThreadLocal