Android: не удалось открыть: ENOENT Нет такого файла или каталога

Я знаю, есть много вопросов, как мой вопрос. Но это другое. Я копирую файл из папки A в папку B в EXTERNAL_STORAGE, используя метод ниже:

    public static String copyFile(String path) {
        String fileToName = String.valueOf(System.currentTimeMillis());

        File pathFrom = new File(path);
        File pathTo = new File(Environment.getExternalStorageDirectory() + "/.noname");
        File file = new File(pathTo, fileToName + ".bak");

        while (file.exists()) {
            fileToName = String.valueOf(System.currentTimeMillis());
            file = new File(pathTo, fileToName + ".bak");
        }

        InputStream in = null;
        OutputStream out = null;
        try {
            in = new FileInputStream(pathFrom);
            out = new FileOutputStream(file);

            byte[] data = new byte[in.available()];
            in.read(data);
            out.write(data);
            in.close();
            out.close();

        } catch (FileNotFoundException e) {
            Log.e(TAG, e.getMessage());
        } catch (Exception e) {
            Log.e(TAG, e.getMessage());
        }
        return file.getPath();
    }

Параметр пути: «/storage/emulated/0/Download/image_preview.jpg». При выполнении этого метода я получил ошибку: /storage/emulated/0/Download/tree_leaves_sunlight.jpg: open failed: ENOENT (No such file or directory). Папка .noname существует. Есть ли какие-либо предложения по моей проблеме?

**ОБНОВЛЕНИЕ: этот файл я открываю с помощью ImageView. Когда я не открываю, я могу скопировать. Но когда я открываю, я получаю эту ошибку. PS: я превью изображения inImageView. И есть Button копия изображения. При нажатии кнопки выполнения метода скопируйте это изображение в другую папку.


person Phan Sinh    schedule 21.10.2015    source источник


Ответы (1)


Когда вы создаете объект File для родительского каталога File pathTo = new File(Environment.getExternalStorageDirectory() + "/.noname"), не забудьте создать эту папку

 pathTo.mkdirs();

Также попробуйте открыть файл, который вы пытаетесь скопировать в галерее. Он может быть поврежден, и Android просто не сможет его открыть.

person HellCat2405    schedule 21.10.2015
comment
пожалуйста, посмотрите мое обновление. Этот метод отлично работает, когда файл не открыт. Но там я открываю этот файл с помощью ImageView. - person Phan Sinh; 21.10.2015
comment
что вы подразумеваете под открытием с помощью ImageView? вы установили этот файл в качестве фона? - person HellCat2405; 21.10.2015
comment
Ой!. Я просматриваю изображение в ImageView. И есть Button копия изображения. При нажатии на Button выполнить метод, скопируйте это изображение в другую папку. - person Phan Sinh; 21.10.2015