1

これが私が使用したコードです。エラーや警告は表示されませんが、ファイルは空です。aq.txtファイルを作成してワークスペースに配置すると、プロジェクトにも表示されます。私が見逃しているのは愚かなことだと確信していますが、私はそれを理解することができません。また、他のすべての質問を試しましたが、提案された答えは、ストリームを閉じるか、フラッシュすることです。どちらも実行しますが、機能しないようです。どんな助けでも大歓迎です!

     Writer writer = null;
 FileOutputStream fos= null;
 try{


     String xyz= "You should stop using xyz";
     writer = new BufferedWriter(new OutputStreamWriter(
         new FileOutputStream(getFilesDir()+File.separator+"aq.txt")));
     writer.write(xyz);
     writer.flush();
 }    
 catch(IOException e) {
     System.out.println("Couldn't write to the file: " + e.toString());
 }
 finally{
     if(writer != null){
         try {
             writer.close();
         }
         catch(IOException e1) {
             e1.printStackTrace();
         }
     }
 }
4

2 に答える 2

2

このようにしてみてください:

fos = openFileOutput(FILE_NAME, Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(fos));
writer.write(xyz);
writer.flush();

Contextクラスは、アプリケーションのFilesディレクトリにあるファイルのFileOutputStreamを返すヘルパーメソッドContext.openFileOutput(String name、int mode)を提供します。

あなたのやり方がうまくいかないという直接的な理由はわかりませんが、私はこれを他の方法でうまく使ったことは知っています。

編集:あなたの質問を読み直した後、私はあなたがこのファイルがどこに書き込まれるのかについて混乱していると思います。ワークスペース内のプロジェクトフォルダには書き込まれません。これは、実行しているAndroidデバイスの内部ストレージに書き込まれます。すべてのアプリケーションは、そこにある独自のストレージスペースのチャンクを取得し\data\data\[package-name]\Files\ます。ファイルはそこに書き込まれるため、すぐに開いてその内容を確認することはできません(デバイスがルート化されている場合を除く)。書き込みが機能した/機能しなかったことを確認するために、Javaコードで開き、その内容をLogまたはその他の出力メソッドに出力します。

編集2:ファイルを読む

FileInputStream in = openFileInput(FILE_NAME);
InputStreamReader inputStreamReader = new InputStreamReader(in);
BufferedReader br = new BufferedReader(inputStreamReader);
String line = br.readLine();
Log.d("TAG", line);

これにより、ファイルの最初の行が読み取られ、ログに出力されます。

于 2012-08-31T21:50:25.500 に答える
0

これは確かに機能します:

File file = new File("fileName");

FileWriter fileWriter = new FileWriter(file);

BufferedWriter writer = new BufferedWriter(fileWriter);

writer.write("data to write in the file.");

writer.flush();
于 2012-12-10T13:13:08.133 に答える