Java读写文件遇到的问题(已解决)
2005-05-30 13:54
666 查看
将一个十万行左右的文件按行分解为若干个一万行的文件,总是在最后一个文件中产生问题。例如一个源文件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()】,导致缓冲区的数据最后无法写入文件中,感觉有点儿脸红^_^)
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()】,导致缓冲区的数据最后无法写入文件中,感觉有点儿脸红^_^)
相关文章推荐
- android 开发中遇到的错误及解决方式(更新R.java文件不能自动更新问题)
- Linux系统下Java应用程序打包成.jar文件遇到问题与解决问题
- 遇到问题---java获取网络文件大小失败getContentLength()为-1 完整解决方法
- 哪些年遇到过的Andriod问题(9)R.java文件不能自动生成解决方法
- java实现插入mysql二进制文件,blob类型,遇到问题及解决办法
- Java 简单解决springmvc获取properties文件里面中文内容出现论码问题(我遇到的问题是数据提交检验时返回的错误提示出现乱码)
- java实现插入mysql二进制文件,blob类型,遇到问题及解决办法
- 遇到问题---java获取网络文件大小失败getContentLength()为-1 完整解决方法
- java 修改jar中的menifest.mf文件后重新打包过程中遇到的中文问题解决
- Java读写文件遇到的问题(已解决)
- Java读csv文件,结合iframe上传csv文件,解决乱码问题
- Java 编程技术中汉字问题的分析及解决,文件操作
- java.lang.Process调用程序阻塞问题解决(刚刚遇到的问题,看有人解决了,转一下:) )
- Java GC机制及原理 项目实际遇到GC问题解决思路和经验总结
- Xp,win7下 jar文件双击不能运行,或无法发现main方法,java -jar的问题解决
- 解决springboot MultipartFile文件上传遇到的问题
- java 使用ImageIO.writer从BufferedImage生成jpeg图像遇到问题总结及解决
- Java项目的*.java 文件打开后注释乱码问题解决办法。
- ant编译java文件时报非法字符问题的解决方法