Android Marshmallow FileUtils.copyFile() создает файлы размером 0,00 B в заданном месте, в то время как на Lollipop работает нормально

Я копирую файл изображения в нужное место на внутреннем хранилище методом

FileUtils.copyFile(File srcFile, File destFile, boolean preserveFileDate)

под пакетом org.apache.commons.io.FileUtils,

Он отлично работает на Lollipop OS и копирует файл плавно, но на Marshmallow OS он не работает и создает файл размером 0,00 B.

Устройство: Lenovo A7000 Lollipop, обновленный с помощью Marshmallow 6.0.

FileManager.copyFile(fileName, cameraUtil.getPath(), "abc"))

public static synchronized boolean copyFile(String fileName, String fromPath, String status){
    File fromFile = new File(fromPath);
    String toPath = createToPath(status);
    if(!TextUtils.isEmpty(toPath)) {
        if(fileName.contains(" ")){
            fileName.replace(" ","_");
        }
        File toFile = new File(toPath+"/"+fileName);
        try {
            FileUtils.copyFile(fromFile, toFile);
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }else{
        return false;
    }
}

public static String createToPath(String status){
    File aFile = new File(Environment.getExternalStorageDirectory(), FileConstants.ROOT_FOLDERNAME+"/"status);
    if(performMkDir(aFile)){
        return Environment.getExternalStorageDirectory().getAbsolutePath()+FileConstants.ROOT_FOLDERNAME+"/"+status;
    }else{
        return null;
    }
}

private static boolean performMkDir(File file){
    if(!file.exists()){
        if(!file.mkdirs()){
            Log.e(TAG, "could not create root folder.");
            return false;
        } else{
            Log.i(TAG, "created root folder.");
            return true;
        }
    }else{
        Log.i(TAG, "root folder already exists.");
        return true;
    }
}

0 ответов

Другие вопросы по тегам