2010-12-05 14 views
0

私はこのコードを持っています。dev.android.comから降りました。Androidでファイルにintを保存する

@Override 
    protected void onStop(){ 
     FileOutputStream fos = openFileOutput(filename, MODE_PRIVATE); 
     fos.write(levelComplete); 
     fos.close(); 
    } 

ファイルが存在しない場合は作成する必要があります。しかし、私はFileNotFoundExceptionを取得しています。助けて?

EDIT:入力:

@Override 
protected void onStart(){ 
    FileInputStream fis = openFileInput(filename); 
    levelComplete = fis.read(); 
    fis.close(); 
} 
+1

ここにopenFileInputの掲載一覧を投稿してください –

+0

上記に追加しました。 –

答えて

0

は、次のコードを試してみてください。 何かのように:

<uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

これは助けになるでしょう!

+1

ファイルがEXTERNAL_STORAGE(たとえば、SDカード)に書き込まれている場合にのみ、 'WRITE_EXTERNAL_STORAGE'が必要であると常に考えていました... –

+0

はい、WRITE_EXTERNAL_STORAGEはSDCardのような外部記憶装置にファイルを書き込む場合にのみ必要です。 –

+0

これは、ああ、私が上に持っているものとほとんど同じですか? –

0

それは、このことが問題であるが、私は念のためにそれを言及したくないかもしれない:あなたがopenFileOutput (String name, int mode)機能のマニュアルを見れば、nameパラメータの説明は、次の言う

名前:開くファイルの名前。パス区切り文字を含むことはできません。

特にに関する部分は、パスの区切りを含めることはできません注意してください。多くはこの1つを逃して、完全なパス(例えば/sdcard/myapp/myfile.txt)を指定しようとしますが、これは許されません。代わりに、ファイルの名前のみを指定してください(例:myfile.txt)。

この理由はopenFileOutputは(およびドキュメントにもそれが存在しない場合には、ファイルを作成することを言います)は、アプリケーションにプライベートあるファイルへのストリームを開くことです。このため、アプリケーションがのプライベートエリアに存在するため、パスを指定する意味がありません。

+0

いいえ、私のパスは単なるファイル名です。 :) –

+0

@Joel Auterson:ok、私たちはそれを1つ支配しました。私はあなたのコードに他の明白なエラーは見当たらないので、ファイルをオープンしようとしたときの完全なエラースタックトレースを含むように質問を更新すると便利かもしれません。 – Nailuj

+0

Eclipseは処理されていない例外があることを私に伝えています。実際にファイルを事前に作成する必要がありますか? –

関連する問題