我用BufferedReader 读取一个文件,读取后做一定处理再写入另一个文件。 
但每次执行时BufferedReader 读取总是不能把文件读完整。 代码如下: 
String sPath = "Date//";   
        File file = new File("E:\\Work\\Workspace\\AmarGCI\\data\\BusinessInfo.dat");   
        File filebak = new File("E:\\Work\\Workspace\\AmarGCI\\data\\BusinessInfo.dat"+".bak");   
        file.renameTo(filebak);   
           
        int i = 0;   
           
        String sNewDuebillNo = "",s = "";   
        try{   
            BufferedReader br = new BufferedReader(new FileReader(filebak));   
            BufferedWriter bw = new BufferedWriter(new FileWriter(file));   
            do{   
                s = br.readLine();   
                   
                                     //处理文件内容   
                sNewDuebillNo = processDuebillNo(s.substring(0, s.indexOf("|")),"");   
                i ++;   
                System.out.println(i);   
                bw.write(sNewDuebillNo + s.substring(s.indexOf("|"))+"\n");   
            }while(br.readLine() != null);   
               
            bw.flush();   
               
        }catch(Exception e){   
            e.printStackTrace();   
        }  String sPath = "Date//";
File file = new File("E:\\Work\\Workspace\\AmarGCI\\data\\BusinessInfo.dat");
File filebak = new File("E:\\Work\\Workspace\\AmarGCI\\data\\BusinessInfo.dat"+".bak");
file.renameTo(filebak);

int i = 0;

String sNewDuebillNo = "",s = "";
try{
BufferedReader br = new BufferedReader(new FileReader(filebak));
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
do{
s = br.readLine();

                                     //处理文件内容
sNewDuebillNo = processDuebillNo(s.substring(0, s.indexOf("|")),"");
i ++;
System.out.println(i);
bw.write(sNewDuebillNo + s.substring(s.indexOf("|"))+"\n");
}while(br.readLine() != null);

bw.flush();

}catch(Exception e){
e.printStackTrace();
}