手机
当前位置:查字典教程网 >编程开发 >Java >java对指定目录下文件读写操作介绍
java对指定目录下文件读写操作介绍
摘要:最近因为项目的国际化的需要,需要对整个项目的100来个插件做国际化,这是一件痛苦的事情,因为纯体力劳动。为了省点工作量,想着能不能写个程序批...

最近因为项目的国际化的需要,需要对整个项目的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+"此处可以添加你自己的字符串处理逻辑"+"rn");

}

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+"rn");

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向文件末尾添加内容示例分享

java使用dom4j解析xml配置文件实现抽象工厂反射示例

Java的关键字与保留字小结

移动指定文件夹内的全部文件

java遍历properties文件操作指南

java 读写文件[多种方法]

Java事务的个人理解小结

java json 省市级联实例代码

java中的枚举类型详细介绍

java 实现文件复制和格式更改的实例

精品推荐
分类导航