Java读写文件遇到的问题(已解决)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

将一个十万行左右的文件按行分解为若干个一万行的文件,总是在最后一个文件中产生问题。例如一个源文件58089行,生成的前五个文件每个一万行没问题,但是最后一个文件却只有七千多行,且最后一行没有写完。程序运行没有任何异常抛出。代码如下:

import java.io.*;

import java.util.*;

public class FileParter {

private ArrayList fileNames = new ArrayList();

public FileParter(String sourceFileName) {

File father = new File(sourceFileName);

try {

LineNumberReader r = new LineNumberReader(new FileReader(father));

int count=1;//行计数器

int fileNum=0;//目标文件序号(文件名)

File f = new File(fileNum+".txt");//创建第一个目标文件

BufferedWriter fw = new BufferedWriter(new FileWriter(f));//创建第一个目标文件读取器

while(r.ready()){

if(count==10001){

count=1;

fileNum++;

fw.close();

f = new File(fileNum+".txt");

this.fileNames.add(fileNum+".txt");

fw = new BufferedWriter(new FileWriter(f));

}

String tmpS = r.readLine();

fw.write(tmpS,0,11);

fw.newLine();

//Debug:

if(fileNum==5 && count>7000)

System.out.println(tmpS+"|"+count);

count++;

}

System.out.println(r.getLineNumber());

} catch (Exception e) {

e.printStackTrace();

}

}

//得到目标文件列表

public String[] getFileNames(){

int size = this.fileNames.size();

String[] names = new String[size];

for(int i=0;i<size;i++)

names[i] = (String)this.fileNames.get(i);

return names;

}

public static void main(String[] args) {

FileParter fp = new FileParter("20050408001.txt");

String[] names = fp.getFileNames();

for(int i=0;i<names.length;i++)

System.out.println(names[i]);

}

}

希望大家指点错误出在哪里。

(PS:今天复查程序发现忘了关闭BufferedFileWriter 【close()】,导致缓冲区的数据最后无法写入文件中,感觉有点儿脸红^_^)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航