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

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


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"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值