问题有二。
一、我想往一个文本文件中添加文件头,比如{(byte)0xEF, (byte)0xBB, (byte)0xBF},用来表示该文件是UTF-8编码。
二、我想顺序读取文本文件中的每一行,然后在其中的第二个字符后再添加一个字符串,回写到原文件中。请教一下具体该怎么实现?谢谢
一、我想往一个文本文件中添加文件头,比如{(byte)0xEF, (byte)0xBB, (byte)0xBF},用来表示该文件是UTF-8编码。
二、我想顺序读取文本文件中的每一行,然后在其中的第二个字符后再添加一个字符串,回写到原文件中。请教一下具体该怎么实现?谢谢
2种方式
第一种 直接行读取源文件,然后添加字符串,然后整行写进源文件或者新建文件
第二种 标示读取,选择一些可以skip的流,然后追加,skip多少的确定是关键两者效率应该差不多,第2种的流比较慢,如果文件大,第一种估计比较耗资源
参考代码:import java.util.*;
import java.io.*;public class InsertFile {
/**
*
* @param srcFile 源文件名
* @param str 第二个字符后要插入的中
* @throws Exception
*/
private static void insertFile(String srcFile,String str) throws Exception
{
File f=new File(srcFile);
Scanner sc=new Scanner(f);
File tmp=File.createTempFile("__tmp___", ".tmp", new File(f.getParent()));
PrintWriter pw=new PrintWriter(tmp);
String line=null;
while(sc.hasNextLine())
{
line=sc.nextLine();
line=line.substring(0,2)+str+line.substring(2);
pw.println(line);
}
sc.close();
pw.flush();
pw.close();
f.delete();
tmp.renameTo(f);
} /**
* @param args
*/
public static void main(String[] args)throws Exception {
// TODO 自动生成方法存根
insertFile("c:/jns.txt", "TTT");
}}