2017-01-03 13 views
0

外部SDカードのAndroidデバイスに簡単なテキストファイルを作成します。私のコードで、私は常にエラーを取得:java.io.FileNotFoundException: /storage/emulated/0/SFX/TEST1.txt: open failed: ENOENT (No such file or directory)Androidの外部SDカードのFileOutputStreamを使用してテキストファイルを作成する - FileNotFoundException

私はこれは、あなたが望むものではありませんSFX/TEST1.txtという名前ディレクトリを、作成し

 Button btn = (Button)findViewById(R.id.btn_Save); 
     btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //mach was 
      StringBuilder sb = new StringBuilder(); 
      sb.append(txtName.getText().toString()); 
      sb.append(System.getProperty("line.separator")); 
      sb.append(txtMonteur.getText().toString()); 
      sb.append(System.getProperty("line.separator")); 
      sb.append(txtStraße.getText().toString()); 
      sb.append(System.getProperty("line.separator")); 
      sb.append(Energiearten); 

      File file; 
      FileOutputStream out; 
      try 
      { 
       file = new File(Environment.getExternalStorageDirectory(), "SFX/TEST1.txt"); 
       file.mkdirs(); 
       out = new FileOutputStream(file); 
       out.write(sb.toString().getBytes()); 
       out.close(); 

      } catch (IOException e) { 
       e.printStackTrace(); 

      } catch (Exception e) { 
       Toast.makeText(ZBewegung.this, "Error:" + e.toString(), Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 
+2

あなたは> = API 23でテストしている場合にも、チェック許可のためのコードを記述する必要があります。そうでない場合は、エラーログもここに記入してください。 – androidnoobdev

+1

[実行時アクセス許可を実装する](https://stackoverflow.com/questions/32635704/android-permission-doesnt-work-even-if-i-have-declared-it)また、[外部ストレージ](https://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html)は[リムーバブル記憶域]ではないため、あなたのコードはSDカードには関係しません](https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html)をご覧ください。 – CommonsWare

+0

ファイルが作成されているかどうかSDカードで確認しますか? –

答えて

0
file = new File(Environment.getExternalStorageDirectory(), "SFX/TEST1.txt"); 
file.mkdirs(); 

私のマニフェストファイルに<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>を設定しました。

試してみてください。

File dir=new File(Environment.getExternalStorageDirectory(), "SFX"); 
dir.mkdirs(); 
file = new File(dir, "SFX/TEST1.txt"); 
+0

あなたのコードとこれを実装することによって(http://stackoverflow.com/questions/33666071/android-marshmallow-request-permission)私は正常に内部ストレージ(リムーバブルSDカードではない)に書き込むことができます。任意の提案をどのようにこれにSDカードに書き込むには? getExternalStorageDirectory()はsdカードを意味しませんか? –

+0

@SepPei: "doesnt getExternalStorageDirectory()はSDカードを意味しますか?" - いいえ。あなたの質問にコメントしたとおり、[外部ストレージ](https://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html)は[リムーバブルストレージ]ではありません(https: //commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html)。 Android 4.4以降では、 'getExternalFilesDirs()'を使用して、返されたリスト内の2番目以降の 'File'オブジェクトを探します。それらはリムーバブルストレージ上に置かれ、アプリが読み書きできるディレクトリを指している必要があります。 – CommonsWare

関連する問題