我最近需要将一个行文件(以“,”分隔的整数)排序为较小的块,同时考虑到内存限制和效率。我目前正在遵循此逻辑:
File file = new File("bigfile.txt");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
int BUFFER_SIZE = 10; // can and should be bigger
byte[] bytes = new byte[BUFFER_SIZE];
while ((bis.read(bytes)) != -1) {
// convert bytes to string
// split bytes to String[]
// save the last number if was cut in the middle and save it for the next round of reading and remove it from the current String[]
// fix cut number if necessary and put it in the String[]
// sort the String[]
// write the String[] into a file
// call Garbage collector to prevent memory leak?
}
bis.close();
假设我被限制为5MB的内存,并且必须读取一个单行文件,该文件的10,000,000整数之间用“,”分隔:]]
对我而言,获取最少数量的已排序文件(或每个文件中最大的数据块)的最佳方法是什么?
我最近需要在考虑内存限制和效率的情况下将一个单行文件(以“,”分隔的整数)排序为较小的块。我目前正在遵循此逻辑:File file = new File(“ ...
任务不容易。我敢肯定这不是最好的方法,但是总比没有好: