2017-01-03 112 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

我在清單文件

 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

如果你在> = 23 API,你必須寫檢查許可代碼也正在測試。如果沒有,那麼在這裏發佈你的錯誤日誌。 – androidnoobdev

+1

[實現運行時權限](https://stackoverflow.com/questions/32635704/android-permission-doesnt-work-even-if-i-have-declared-it)。另請注意,您的代碼不屬於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設備上。 – CommonsWare

+0

檢查SD卡是否創建文件? –

回答

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

設置<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>這將創建一個目錄命名SFX/TEST1.txt,這是不是你想要的。

嘗試:

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()',並在返回列表中查找第二個或後續的File對象。這些應該在可移動存儲上,指向你的應用可以讀寫的目錄。 – CommonsWare

相關問題