0

私は Android アプリに取り組んでおり、テキスト ファイルに書き込みたいと考えています。しかし、書き込みボタンをクリックすると、アプリにエラー メッセージが表示されて停止します。エラーは

IllegalArgumentException: ファイル mnt/sdcard/test.txt にパス区切り文字が含まれています

次のコードを使用しました。

try {
    final String TESTSTRING = new String("Hello Android");

    FileOutputStream fOut = openFileOutput("mnt/sdcard/test.txt",
                                               MODE_WORLD_READABLE);
    OutputStreamWriter osw = new OutputStreamWriter(fOut); 

    osw.write(TESTSTRING);

    osw.flush();
    osw.close();
} catch (IOException ioe) {
    ioe.printStackTrace();
}
4

3 に答える 3

1

WRITE_EXTERNAL_STORAGE は現在必要ありません。これは問題ではありません。

問題は、プライベート ストレージへのパスを持つファイルにアクセスしようとしていることです。

openFileOutput() は、プライベート エリアに書き込むためのファイルを開きます。ファイル名の引数にパスを含めることはできません。リファレンス ドキュメントには、「開くファイルの名前。パス区切り文字を含めることはできません。」と記載されています。( openFileOutput の参照ドキュメントを参照してください)。内部ストレージに書き込むには、単純に openFileOutput("test.txt", Context.MODE_PRIVATE) を使用します。他のモードを設定する理由はありません。ファイルにアクセスできるのはあなたのアプリだけです。

外部ストレージに書き込みたい場合は、getExternalFilesDir()を使用し、必要に応じてサブディレクトリのタイプを指定してから、通常の java.io.* オブジェクト (File など) を使用してファイルに書き込みます。リファレンス ドキュメントに例が示されています。外部ストレージ内のファイルは他のアプリから見えることに注意してください。

于 2013-08-30T20:50:09.213 に答える
1
 Try something like this      

       try {
         File myFile = new File("/sdcard/sample.txt");

         // added extra

         myFile.createNewFile(); 

         FileOutputStream fOut = new FileOutputStream(myFile);
         OutputStreamWriter myOutWriter = 
         new OutputStreamWriter(fOut);    
         myOutWriter.close();
         fOut.close();
      }

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />マニフェストに " " を追加することを忘れないでください。

于 2013-08-30T19:02:20.917 に答える