Неизвестная причина исключения FileNotFoundException - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть метод: copyImage, который принимает два строковых аргумента ( источник изображение, цель изображение) внутри ImageLoder класса, как показано ниже:

public Class ImageLoader{

public boolean copyIMAGE(String source, String target){


        File sourceFile=new File(Environment.getExternalStorageDirectory()+source);

        File targetFile=new File(Environment.getExternalStorageDirectory()+target);

        InputStream fis;

        OutputStream fos;

        BufferedOutputStream bufferIS;


        try{

            fis=new FileInputStream(destinationFile);
            fos=new FileOutputStream(targetFile);
            bufferIS=new BufferedOutputStream(fos);

            byte[] b=new byte[1024];

            int len=0;


            try
            {
                while ((len = fis.read(b)) != -1)

                {           
                    fos.write(len);

                }

                bufferIS.close();
            fos.close();
            fis.close();
                return true;
            }

            catch (IOException e)
            {

        }


            }catch(FileNotFoundException e){


        }

return false;

    }


}

метод сработал после нажатия кнопки copyButton в классе MainActivity и copyImage вернул false

copyButton.setOnClickListener(new View.OnClickListener(){

                @Override
                public void onClick(View view)
                {
                    // TODO: Implement this method


                    String source="/storage/emulated/0/Download/my image.jpeg";

                    String target ="/storage/emulated/0/Download//images/my image.jpeg";

                    loader.copyIMAGE(source,target);

            }   
        });

Метод вернул false, и я получил исключение FileNotFound.

Ps: исходный файл существует, место назначения существует, у меня есть права rw .

1 Ответ

0 голосов
/ 13 февраля 2020

Почему вы используете Environment.getExternalStorageDirectory()? Удалите это, поскольку source и target уже являются полными путями.

File destinationFile=new File(source);

File targetFile=new File(target);

А также ваша функция копирования неверна, вы вызываете write с неправильными параметрами.

while ((len = fis.read(b)) != -1)

{           
    fos.write(b, 0, len);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...