Java 修改 文件内容 and BufferedReader 乱码问题

来源:互联网 发布:软件项目的社会效益 编辑:程序博客网 时间:2024/05/18 01:39

批量修改相似文档,在文档中添加一行,(处理大量小文件)


package edu.btbu.cs714.webgl.three;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.regex.Matcher;import java.util.regex.Pattern;public class ChangeAPI {private Pattern pattern =  null;;public ChangeAPI(){pattern = Pattern.compile("\\s*\\[link:https:.*\\.js\\]");}public void updateFile(File file) throws IOException{if(file.getName().endsWith(".html")){//file.  new InputStreamReader(in,"utf-8")BufferedReader br = new BufferedReader( new InputStreamReader(new FileInputStream(file),"utf-8"));StringBuffer sb =new StringBuffer();String tempString = null;while((tempString=br.readLine())!=null){//System.out.println(tempString);Matcher matcher = pattern.matcher(tempString);sb.append(tempString+'\n');while(matcher.find()){   tempString = "<br/>[link:../../../src/[path].js src/[path].js]\n";//添加内容   sb.append(tempString);}}br.close();//System.out.println(sb);BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"utf-8"));bw.write(sb.toString());bw.close();}else if(file.isDirectory()){for(File f :file.listFiles()){updateFile(f);}}}public static void main(String []args) throws IOException{ChangeAPI change = new ChangeAPI();change.updateFile(new File("F:\\Work\\docs\\api"));}}

其中乱码问题解决:


为InputStreamReader、OutputStreamReader设置编码格式utf-8:

BufferedReader br = new BufferedReader( new InputStreamReader(new FileInputStream(file),"utf-8"));

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"utf-8"));