2017-11-16 15 views
0

私はtxtファイルを作成し、アンドロイドでsdcardに書き込もうとしています。 「ディレクトリが作成されていません」というエラーが表示されます。 path.mkdirs()は、必要なディレクトリを作成する必要がありますか?私はをAndroidManifest.xmlに入れていて、アプリのストレージ許可を有効にしています。androidのファイルに文字列を保存できません

Androidのバージョン:7.0

public void addData(View v) { 
    wordList.add(inAddWord.getText().toString()); 

    File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS); 
    File file = new File(path, "wordDatabase.txt"); 

    try { 

     if(!(path.exists() && path.isDirectory())) { 
      while (!path.mkdir()) { 
       Log.e("Path", "Directory not created"); 
      } 
     } 

     OutputStream os = new FileOutputStream(file); 
     os.write((inAddWord.getText().toString() + "\n").getBytes()); 
     os.close(); 


    } catch (IOException e) { 
     e.printStackTrace(); 
     Log.w("ExternalStorage", "Error writing " + file, e); 
    } 
} 
+0

また、キャッチが発生したときにユーザーに通知するために、キャッチブロックにトーストを配置する必要があります。 – greenapps

+0

'while(!path.mkdir()){ Log.e(" Path "、" Directory not created ");'。不正なコード。ディレクトリを作成できない場合、アプリはハングします。何度も何度も試してみることは意味がありません。 whileをifに変更します。 mkdirが失敗した場合にユーザーに通知するトーストを追加します。そして戻る。続けるのは意味がありません。あなたのコードを適応させて、ここでも更新してください。 – greenapps

+0

'if(!path.exists()&& path.isDirectory())'。いいえ、 'if(!path.exists())'。 – greenapps

答えて

0

のAndroid上であなたがマニフェストに要求する権限を確認するために、ユーザーに依頼するコードを追加する必要があり6+。

Google for runtime pemissions。

+0

私はそれをしましたが、それと同じ問題... –

+0

もちろん、ディレクトリが存在しない場合は、mkdir()またはmkdirs()を呼び出すだけで、mkdirs()の戻り値もチェックし、ディレクトリが作成されていない場合はコードを続行しないでください。 – greenapps

+0

完了まだ機能していませんアプリケーションが機能を実行した後で何もしないため、ファイルやディレクトリが作成されませんでした。 –

関連する問題