Java 这只是一个打字错误吗?
我一直在读《Android游戏入门》一书,我遇到了以下代码和文本:Java 这只是一个打字错误吗?,java,android,Java,Android,我一直在读《Android游戏入门》一书,我遇到了以下代码和文本: public static void load(FileIO files) { BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader( files.readFile(".mrnom"))); soundEnabled = Boolean.parseBoolean( in .
public static void load(FileIO files) {
BufferedReader in = null;
try { in = new BufferedReader(new InputStreamReader(
files.readFile(".mrnom")));
soundEnabled = Boolean.parseBoolean( in .readLine());
for (int i = 0; i < 5; i++) {
highscores[i] = Integer.parseInt( in .readLine());
}
} catch (IOException e) {
// :( It's ok we have defaults
} catch (NumberFormatException e) {
// :/ It's ok, defaults save our day
} finally {
try {
if ( in != null)
in .close();
} catch (IOException e) {}
}
}
接下来是一个名为save的方法。它接受当前设置并将其序列化为
外部存储器上的.mrnom文件,例如/sdcard/.mrnom。声音设置和每个
高分条目存储为该文件中的一个单独的行,正如加载所期望的那样
方法如果出现问题,我们只需忽略故障并使用默认值
之前定义的。在AAA标题中,您可能希望通知用户此加载
错误
我很困惑,因为它说它在save方法中写入新行,所以在load方法中,使用readLine可以正常工作。但是,它们仅使用不带/n字符的write。这将如何工作?它只是一个打字错误吗?不,它不是一个打字错误。
BufferedReader从字符输入流中读取文本,对字符进行缓冲,以便有效读取字符、数组和行。然后,它使用common System.lineSeparator作为分隔符来分割文本值。
请自己检查分隔符。分隔符是回车符,对吗?当调用writestring时,根据我的判断,没有空格。我在eclipse中尝试了这段代码,并查看了文件中的所有内容。我稍微修改了一下代码System.out.println的布尔值在保存后不起作用,可能是因为它的值为true,旁边写的数字为true123。write方法似乎不是用空格或returns来编写文本。实际上,您必须修改write方法,以使BufferedReader能够理解一段属性何时结束。因此,只需在每个值附近添加System.lineSeparator。这是否意味着当前代码输入错误?当前代码输入错误,第一句话不是输入错误。BufferedReader需要分隔符。嗯,好的。我觉得奇怪的是,这段代码竟然能在这本书中找到它的踪迹。它甚至在更新的版本中。
public static void save(FileIO files) {
BufferedWriter out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(
files.writeFile(".mrnom")));
out.write(Boolean.toString(soundEnabled));
for (int i = 0; i < 5; i++) {
out.write(Integer.toString(highscores[i]));
}
} catch (IOException e) {} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {}
}
}