将文本文件拆分为大小相等的文件而不破坏 Java 中的单词
Splitting a text file into equal size files without breaking words in Java
我正在尝试将一个 txt 文件拆分成多个大小相同的文件。我设法使用此功能做到了这一点:
public static int fileSplitting(String fichier, String dossSortie, int nbMachines) throws FileNotFoundException, IOException{
int i=1;
File f = new File(fichier);
//FileReader fr = new FileReader(f);
//BufferedReader br = new BufferedReader(fr);
int sizeOfFiles = (int) (f.length()/(nbMachines));
System.out.print(sizeOfFiles);
byte[] buffer = new byte[sizeOfFiles];
try (BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(f))){
int tmp = 0;
while ((tmp = bis.read(buffer)) > 0) {
//write each chunk of data into separate file with different number in name
File newFile = new File(dossSortie+"S"+i);
try (FileOutputStream out = new FileOutputStream(newFile)) {
out.write(buffer, 0, tmp);//tmp is chunk size
}
i++;
}
}
return i;
}
问题是这个函数切掉了单词,而我需要保留每个单词。
例如,如果我有一个 txt 文件“我住在阿姆斯特丹”,该函数会将其拆分为:“我住在 Ams”、“terdam”。我想要这样的东西:“我住在”,“阿姆斯特丹”。
我无法完成这项工作,但我将我的文件拆分为一个单词数组,然后将我的文件拆分为具有相同单词数的文件。这不完全是我想做的,也不是一种“漂亮的方式”,但还不错。
我正在尝试将一个 txt 文件拆分成多个大小相同的文件。我设法使用此功能做到了这一点:
public static int fileSplitting(String fichier, String dossSortie, int nbMachines) throws FileNotFoundException, IOException{
int i=1;
File f = new File(fichier);
//FileReader fr = new FileReader(f);
//BufferedReader br = new BufferedReader(fr);
int sizeOfFiles = (int) (f.length()/(nbMachines));
System.out.print(sizeOfFiles);
byte[] buffer = new byte[sizeOfFiles];
try (BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(f))){
int tmp = 0;
while ((tmp = bis.read(buffer)) > 0) {
//write each chunk of data into separate file with different number in name
File newFile = new File(dossSortie+"S"+i);
try (FileOutputStream out = new FileOutputStream(newFile)) {
out.write(buffer, 0, tmp);//tmp is chunk size
}
i++;
}
}
return i;
}
问题是这个函数切掉了单词,而我需要保留每个单词。 例如,如果我有一个 txt 文件“我住在阿姆斯特丹”,该函数会将其拆分为:“我住在 Ams”、“terdam”。我想要这样的东西:“我住在”,“阿姆斯特丹”。
我无法完成这项工作,但我将我的文件拆分为一个单词数组,然后将我的文件拆分为具有相同单词数的文件。这不完全是我想做的,也不是一种“漂亮的方式”,但还不错。