2016-09-18 4 views
2

私は次の問題...私はソース上の答えを検索したが、良い答えを見つけられませんでした...Androidでファイルを保存:java.io.FileNotFoundException。オープンに失敗しました: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.<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; 
} 

答えて

1

使用このコード

File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/EmailClient/"); 

folder.mkdirs(); 
File file = new File(folder,filename); 
file.createNewFile(); 
+0

フォルダとファイルが作成されますが、ファイル= 0 mkdirsの大きさ)そして、createNewFile()はfalseを返します... – Dzmitry

+0

例外によると、エラーはファイルが見つかりません – LearnPainLess

+0

バイト[] attachment = [B @ 428943b8 – Dzmitry

0

私はあなたが「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)

+0

私はこれを試した。うまくいきません。私はMVPパターンを使用しており、そこにはコンテキストを使用していません。 – Dzmitry

関連する問題

 関連する問題