1

ファイルを読み込んで、変更を加えて書き戻す必要があるアプリを作成しています。現時点では、資産に初期ファイルがあり、問題なく読み取れますが、その場所に書き込めないことがわかりました。内部ストレージに書き込みたい。

アプリが電話で書き込み、ファイルにアクセスできるようにするには、どこにファイルを書き込む必要がありますか?

さまざまな実装でさまざまなエラーが発生し続けます。以下は私に提供します

filenotfound 例外: EROFS 読み取り専用ファイル システム

public void write(Entry[] newEntries){
 try {
   FileOutputStream os = new FileOutputStream(new File("combinationswrite.txt"));
   OutputStreamWriter osw = new OutputStreamWriter(os);
   for (int j = 0; j < newEntries.length; j++){
      if (newEntries[j] != null){
       osw.write(newEntries[j].symbol);
       osw.write("\t");
       for (int i =0; i<6; i++){
        osw.write(newEntries[j].getNode(i));
        if( i < 5)
         osw.write(",");
        else
         osw.write("\n");
       }
      }
   }
   osw.flush();
   osw.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

ドキュメントで次の実装を試みる場合: http://developer.android.com/training/basics/data-storage/files.html

openFileOutput メソッドが認識されない

4

1 に答える 1

0

参照するリンクから、コードを次のようにします

 public void write(Entry[] newEntries){
     try {
       FileOutputStream os = new FileOutputStream( getTempFile(context , "combinationswrite.txt"));
       OutputStreamWriter osw = new OutputStreamWriter(os);
       for (int j = 0; j < newEntries.length; j++){
          if (newEntries[j] != null){
           osw.write(newEntries[j].symbol);
           osw.write("\t");
           for (int i =0; i<6; i++){
            osw.write(newEntries[j].getNode(i));
            if( i < 5)
             osw.write(",");
            else
             osw.write("\n");
           }
          }
       }
       osw.flush();
       osw.close();
      } catch (IOException e) {
       e.printStackTrace();
      }
     }

public File getTempFile(Context context, String url) {
    File file;
    try {
        String fileName = Uri.parse(url).getLastPathSegment();
        file = File.createTempFile(fileName, null, context.getCacheDir());
    catch (IOException e) {
        // Error while creating file
    }
    return file;
}

このメソッドgetTempFileは、内部ストレージからファイルを返します

于 2013-04-02T00:22:21.190 に答える