内部ストレージのファイルの新しい行に各整数を保存して、アプリケーションに整数のリストを保存しようとしています。それを取得するために、私はそれを行ごとに読み取り、整数として解析されたすべての行の値を整数のリストに入れました。この種のものにはデータベースの方が適していることは知っていますが、これは機能するはずです。
私はかなり長い間試していますが、うまくいかないようです。読み込もうとすると、常に nullpointerexception が発生します。「行」をログに記録すると、必要な値が得られました。しかし
1 つの ID を保存し、それを新しい文字列として追加します。
private void saveToFavorites(Integer saveFav) {
String favstr = String.valueOf(saveFav);
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new OutputStreamWriter(openFileOutput("favorites", MODE_WORLD_WRITEABLE)));
writer.newLine();
writer.append((favstr));
System.out.println(" added to favs :"+ saveFav);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
そして読み取り方法:
@SuppressWarnings("null")
private List<Integer> readFileFromInternalStorage() {
List<Integer> favs = null;
BufferedReader input = null;
try {
input = new BufferedReader(new InputStreamReader(openFileInput("favorites")));
String line;
while ((line = input.readLine()) != null) {
System.out.println("readFileFromInternalStorage line value: "+ line );
favs.add(Integer.parseInt(line));
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("readFileFromInternalStorage: fail" );
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return favs;
}
これは他のアクティビティにあります。うまくいくと思っていましたが、明らかにうまくいきません。読み返すと、ログライン: System.out.println("readFileFromInternalStorage line value: "+ line ); line の値が最後に追加された id と等しいこと、および空の行が表示されますが、他の行もそうではありません。したがって、行ごとの保存は失敗します。また、それを整数に解析するときに失敗します。これは単なる数値であるため、奇妙なことです。
08-01 12:29:54.190: I/System.out(1540): readFileFromInternalStorage line value:
08-01 12:29:54.190: I/System.out(1540): readFileFromInternalStorage line value: 301
誰が私が何を変更する必要があるか知っていますか?