在我的应用程序中,我实现了一个下载管理器,它使用多重连接下载文件并将内容保存在临时文件中,最后在下载完成时将这些文件合并到一个文件中。
我的问题是最后一步(合并文件)需要太长时间才能完成甚至超过下载文件(例如,在5秒内下载250 Kb并在大约10 - 15秒内合并的文件)。
我正在使用此方法合并临时文件:
private void mergeAndActivate() {
new AsyncTask<Void, Integer, Void>() {
@Override
protected void onPreExecute() {
// only toast a message
}
@Override
protected Void doInBackground(Void... params) {
long leninfile=0, leng=0;
int count=0, data=0;
try {
String filePath =download.getFile().getPath();
File filename = new File(filePath);
RandomAccessFile outfile = new RandomAccessFile(filename,"rw");
while(true) {
filename = getTempFile(count);
if (filename.exists()) {
RandomAccessFile infile = new RandomAccessFile(filename,"r");
data=infile.read();
while(data != -1) {
outfile.write(data);
data=infile.read();
}
leng++;
infile.close();
count++;
} else break;
}
outfile.close();
} catch(Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
deleteTempFiles();
// Toast a mesage
}
}.execute();
}