私はAndroidゲームを開発しています。View を拡張する Game クラスと Main Activity クラスがあります。
内部ストレージからハイスコアを読み込もうとしています。onCreate() でロードし、onDestroy() で保存したい。
Game game;
FileOutputStream fos;
FileInputStream fis;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
game = new Game(this);
String collected = null;
try {
File file = getBaseContext().getFileStreamPath(Game.FILE_NAME);
if(!file.exists()){
file.createNewFile();
}
fis = openFileInput(Game.FILE_NAME);
byte[] dataArray = new byte[fis.available()];
while (fis.read(dataArray) != -1){
collected = new String(dataArray);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(collected != null) game.setHighScore(Integer.parseInt(collected));
else game.setHighScore(0);
setContentView(game);
}
protected void onDestroy() {
super.onDestroy();
try {
fos = openFileOutput(Game.FILE_NAME, Context.MODE_PRIVATE);
String data = "" + game.highScore;
fos.write(data.getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
DroidX でアプリをテストしています。ファイルを読み込もうとすると、起動時にクラッシュします。セクションをコメントアウトして読み取ると、アプリは正常に動作し、必要に応じてデータを書き込みます。データの保存中に再度実行すると、正しく読み込まれます。
ロードする前にファイルが存在するかどうかを確認するにはどうすればよいですか?
よろしくお願いします