【发布时间】:2016-01-10 11:47:19
【问题描述】:
我目前正在练习拆分和合并文件。我在网上找到了一段由“krishna”编写的带有拆分和合并类的代码。分离器就像一个魅力,我做了一些修改,让它按照我喜欢的方式工作。
这里有一个问题:我希望合并类打开拆分器生成的 .00x 文件。但它仅限于恰好八个 .00x 文件,不多不少。
如果我能让它读取文件夹中的所有 .00x 文件就好了。我一直在想一个解决方案,但我似乎无法产生一个。我想制作一些东西来扫描扩展名为 .00x 的文件的数量并基于它进行循环。请帮助我,或者至少给我提示。谢谢!代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
public class MergeFile {
private static String FILE_NAME = JOptionPane.showInputDialog("Enter the file name");
public static void main(String[] args) {
File ofile = new File(FILE_NAME);
FileOutputStream fos;
FileInputStream fis;
short[] fileBytes;
int bytesRead = 0;
List<File> list = new ArrayList<File>();
list.add(new File(FILE_NAME+".001"));
list.add(new File(FILE_NAME+".002"));
list.add(new File(FILE_NAME+".003"));
list.add(new File(FILE_NAME+".004"));
list.add(new File(FILE_NAME+".005"));
list.add(new File(FILE_NAME+".006"));
list.add(new File(FILE_NAME+".007"));
list.add(new File(FILE_NAME+".008"));
try {
fos = new FileOutputStream(ofile,true);
for (File file : list) {
fis = new FileInputStream(file);
fileBytes = new byte[(int) file.length()];
bytesRead = fis.read(fileBytes, 0,(int) file.length());
assert(bytesRead == fileBytes.length);
assert(bytesRead == (int) file.length());
fos.write(fileBytes);
fos.flush();
fileBytes = null;
fis.close();
fis = null;
}
fos.close();
fos = null;
}catch (Exception exception){
exception.printStackTrace();
}
}
}
【问题讨论】:
-
FileUtils#listFiles来自 apache commons-io 可以工作