在对文件进行读取,复制等操作前,往往需要去判断文件是否已经完全写入完毕,如果这个文件的写入操作是在你自己写的代码里,那么可以通过自己添加一些标志位来获取当前文件的写入状态,但是如果文件的写操作并非是你的代码去控制的,比如是系统dump hprof文件,那么应该怎么去判断hprof文件已经写入完毕呢?
下面的方式可以判断文件是否读写完毕,基本思想就是投机取巧的用了文件的长度,如果不再涨那么就判断写入完成了
/**
* 等待文件(非目录)读写完毕,费时的操作,不要放在主线程
*
* @param file 文件
*/
private void waitForWirtenCompleted(File file) {
if (!file.exists())
return;
long old_length;
do {
old_length = file.length();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i("waitForWirtenCompleted: ", old_length + " " + file.length());
} while (old_length != file.length());
}