我正在尝试将大文件分成单独的较小文件。这个文件基本上是新行上的每个数字列表。我使用下面的代码根据每个20字节的字节分隔文件。我面临的问题是数字不完整。例如,如果原始文件是
123
2456
3456
我得到的结果是
file1 file2 CorrectFile1 CorrectFile2
1 123 3456
2456 3 2456
456 23
这只是一个例子。我需要的是由correctfile表示。我知道这是可能的,因为我使用字节打破它。有什么方法可以实现这一点(注意不能使用数组或任何东西,因为我必须通过网络传输字节)
public static void splitFile(File f) throws IOException {
System.out.println("entering split file");
int splitCounter = 1;
int sizeOfFiles = 20; // 200kb
byte[] buffer = new byte[sizeOfFiles];
try (BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(f))) {
//String name = this.getFileNameWithoutExtension(f.getName());
int tmp = 0; // chunk size
while ((tmp = bis.read(buffer)) > 0) {
//File newFile = new File("f.txt");
String fileName = String.format("%s%03d.txt", "job",splitCounter++);
File newFile = new File(f.getParent(),fileName);
try (FileOutputStream out = new FileOutputStream(newFile)) {
out.write(buffer, 0, tmp);
//this.tracker.jobList.add(fileName);
//this.parentString = f.getParent();
}
}
}
}
答案 0 :(得分:0)
你可以试试StringTokenizer
字符串tokenizer类允许应用程序将字符串分解为标记。标记化方法比StreamTokenizer类使用的方法简单得多。
答案 1 :(得分:0)
使用Apache FileSplit Api。
执行此操作的最佳方法经过测试和优化,非常快。