Сохраните файл в Android: java.io.FileNotFoundException. open failed: ENOENT (Нет такого файла или каталога)

Вопрос: У меня есть следующая проблема... Я искал ответ на источник, но не нашел хорошего ответа... java.io.FileNotFoundException: /mounted/EmailClient/side-corner.png: open failed: ENOENT (No such file or directory) at libcore.io.IoBridge.open(IoBridge.java:453) at java.io.FileOutputStream.(FileOutputStream. at java.io.FileOutputStream.(FileOutputStream.java:73) etc Код: private static String saveFile(String filename, InputStream input) { String path = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(path)) { try { byte[] attachment = new

Вопрос:

У меня есть следующая проблема… Я искал ответ на источник, но не нашел хорошего ответа…

java.io.FileNotFoundException: /mounted/EmailClient/side-corner.png: open failed: ENOENT (No such file or directory) at libcore.io.IoBridge.open(IoBridge.java:453) at java.io.FileOutputStream.<init>(FileOutputStream. at java.io.FileOutputStream.<init>(FileOutputStream.java:73) etc

Код:

private static String saveFile(String filename, InputStream input) { String path = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(path)) { try { byte[] attachment = new byte[input.available()]; input.read(attachment); File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + «/EmailClient/», filename); if (!file.mkdirs()) Log.d(«EmailClient», «saveFile: Dir not created»); FileOutputStream out = new FileOutputStream(file); //PROBLEM! out.write(attachment); input.close(); out.close(); return path; } catch (IOException e) { Log.e(«EmailClient», «saveFile: File not saved», e);; } } return path; } Лучший ответ:

используйте этот код

File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + «/EmailClient/»); folder.mkdirs(); File file = new File(folder,filename); file.createNewFile(); Ответ №1

Я думаю, вы пытаетесь сохранить файл в каталоге “DIRECTORY_DOWNLOADS”. Поэтому вы должны следовать приведенному ниже коду. В приведенной ниже строке указывается каталог.

path = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS);

Если вы хотите создать определенную папку “Email_Client” внутри этого пути, напишите эту строку.

File folder = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS)+»/Email_Client/»);

И вы должны объявить разрешение “WRITE_EXTERNAL_STORAGE”

String fileName=»myfile.txt»; String input=»Hello World»; String path = Environment.getExternalStorageState(); File file=null; if (Environment.MEDIA_MOUNTED.equals(path)) { try { byte[] attachment = input.getBytes(); File folder = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS)+»/Email_Client/»); folder.mkdirs(); file=new File(folder,fileName); //Automatically creates the new empty file specified by the name, if it is not exist. file.createNewFile(); Log.i(«EmailClient», «saveFile: Dir created»); FileOutputStream out = new FileOutputStream(file); out.write(attachment); out.close(); } catch (IOException e) { Log.e(«EmailClient», «saveFile: File not saved», e);; } }

Пожалуйста, обратитесь к этому URL-адресу: https://developer.android.com/reference/android/os/Environment.html#getExternalStoragePublicDirectory(java.lang.String)

Оцените статью
Добавить комментарий