2017-07-28 7 views
0

これは二重の投稿ですが、他のスレッドは私の質問に答えていません。アンドロイド - ファイルを内部の記憶装置に保存

たManifest.xmlコード:

<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> 
は私がマニフェストに権限を追加

内部ストレージにAndroidのディレクトリ内の私のアプリのディレクトリにファイルを書き込みたいです

Javaのコード:

File myPath = new File(getFilesDir(), "test.dat");    
    myPath.mkdirs(); 
    FileOutputStream fos = null; 
    try { 
     fos = new FileOutputStream(myPath); 
     fos.write(bytes); 
    } catch (Exception e) { 

    } 

しかし、私のアプリのディレクトリは作成されていないので、検索でファイル名を見つけることができません。

EDIT: 実際にはFileNotFoundExceptionがスローされました。 しかし、私はmkdirs()がすべての不足しているディレクトリを作成すると考えました。

+1

ランタイムパーミッションを使用https://developer.android.com/training/permissions/requesting.html – Anil

+1

内部ストレージには実行時のアクセス権が不要 –

+1

e.printStackTrace()を実行できますか?あなたの例外では何が問題であるか見るために –

答えて

1

あなたは以下を試すことができます。

ContextWrapper contextWrapper = new ContextWrapper(getApplicationContext()); 
    File directory = contextWrapper.getDir(getFilesDir().getName(), Context.MODE_PRIVATE); 
    File file = new File(directory,”fileName”); 
    String data = “TEST DATA”; 
    FileOutputStream fos = new FileOutputStream(“fileName”, true); // save 
    fos.write(data.getBytes()); 
    fos.close(); 

これは、デバイスの内部ストレージ(/data/user/0/com.yourapp/)内のファイルこのことができます

希望を書きます!

1

私のアプリのためのディレクトリが作成されていないと私は検索経由でファイル名を見つけることができませんが、このよう

String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/filename"; 

      File dir = new File(path); 
      if (!dir.exists()) 
       dir.mkdirs(); 

      // File file = new File(dir, "filename"); 
+0

これはうまくいくかもしれませんが、別のアプローチです。内部ストレージに保存するには、絶対パスの後にフォルダ構造を持つ必要はありません。これは彼がどこでミスをしたのかを彼に伝えていない。 –

+0

ファイル名を直接書き込むことはできますが、編集した回答ファイルは内部の記憶装置にあるcreaetになります。 –

+0

私はそれを試しました。同じ結果があります - > FileNotFoundException – cmplx96

1

を試してみてください。 AndroidのSDKを使用すると、

ユーザーがどのようなAndroidのSDK external storageへのアクセス権を持って使用しているものであるinternal storage、などを指し、何

あなたは、ユーザとして、あなたのアプリケーションの一部にはアクセスできません。

関連する問題