0

まず、私はSDカードに書き込もうとしていません。私は、アプリケーションの使用の間に存続するファイルにいくつかの情報を書きたいと思います。基本的には、特定のユーザーのお気に入りを保持するファイルです。コードは次のようになります。Androidエミュレータでファイルを作成してファイルに書き込もうとすると、FileNotFoundExceptionが発生するのはなぜですか?

try { 
      File file = new File("favorites.txt"); 

      if (file.exists()) { 
       Log.d(TAG, "File does exist."); 
       fis = new FileInputStream(file); 
       br = new BufferedReader(new InputStreamReader(fis)); 
      } 
      else { 
       Log.d(TAG, "File does not exist."); 
       return favDests; 
      } 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     }

このコードを実行すると、「ファイルは存在しません」というメッセージが表示されます。 DDMSログにメッセージが表示されます。

また無駄に次のコードを試みた:

try { 
      File file = new File(GoLincoln.FAV_DEST_FILE); 

      fis = new FileInputStream(file); 
      br = new BufferedReader(new InputStreamReader(fis)); 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     }

をそれがFileNotFoundExceptionをもたらすコードのこの第二の部分です。

私はAndroidでファイルを書き込んだり読んだりするために複数のチュートリアルを読んでいます。私はそれらを非常によく追っていると思います。なぜこのコードがうまく動作しないのかわかりません。私は助けていただきありがとうございます!

+0

これまでにファイルに書き込みましたか? New File()は、OutpuStreamを開いて書き込むまで、ファイルを作成しません。 –

答えて

2

Fileクラスは直接使用しないでください。アプリケーションに固有のキャッシュディレクトリを取得するには、Activity.getCacheDir()を使用してください。次に、new File(cachedir, "filename.tmp")を使用してファイルを作成します。

+0

また、アンドロイドの設定クラスを見てください。私はそれがデータのリストの方が適していると思います。 –

+0

.getCacheDir()ではなくActivity.getFilesDir()を使用する方が良いでしょうか? – jbranchaud

+0

getFilesDirはopenFileOutputを使用するのと同じです。それはあなたが必要とするものによって異なります。実際にキャッシュしていない場合は、getFilesDirがより適しているかもしれません。 –

1

環境設定とSQLLiteを使用すると、自分のファイルを管理しなくても永続データを保持できます。

これは本当に基本的な最も簡単な方法です

mySharedPreferences.getString("MyPreferenceName", "DefaultValue"); 

好みを取得するには、あなたがそう

mySharedPreferences = context.getSharedPreferences("DatabaseNameWhateverYouWant", 0); 
mySharedPreferences.getEditor().putString("MyPreferenceName", "Value").commit(); 

のように値を編集し、あなたのコンテキストからそれをつかむ共有環境設定を、使用するにはファイルをやるほうがはるかに簡単です。さらに多くの文字列がサポートされていますが、ほとんどの基本データ型はPreferencesクラスに追加することができます。

関連する問題