判断文件是否写入完毕

在对文件进行读取,复制等操作前,往往需要去判断文件是否已经完全写入完毕,如果这个文件的写入操作是在你自己写的代码里,那么可以通过自己添加一些标志位来获取当前文件的写入状态,但是如果文件的写操作并非是你的代码去控制的,比如是系统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());
    }


你可能感兴趣的:(java,android)