Sams自学Java在24小时第六版作者:罗杰斯·卡登黑德第20章ConfigWriter.java error
我是一个Java初学者。我正在阅读这篇文章标题中列出的Java书。我对这种不能工作的方式感到非常困惑。代码应该创建一个名为program.properties的文件,并将第10到12行的文本放入其中。
import java.io.*;
class ConfigWriter {
String newline = System.getProperty("line.separator");
ConfigWriter() {
try {
File file = new File("program.properties");
FileOutputStream fileStream = new FileOutputStream(file);
write(fileStream, "username=max");
write(fileStream, "score=12550");
write(fileStream, "level=5");
} catch (IOException ioe) {
System.out.println("Could not write file");
}
}
void write(FileOutputStream stream, String output)
throws IOException {
output = output + newline;
byte[] data = output.getBytes();
stream.write(data, 0, data.length);
}
public static void main(String[] arguments) {
ConfigWriter cw = new ConfigWriter();
}}
相反,它什么也做不了。它完全是空白的。我非常感谢任何人对这个错误的帮助!
发布于 2013-01-22 11:10:25
最有可能的问题是您对文件将被写入的位置感到困惑。
如果您使用相对路径名(如"program.properties")写入文件,Java将尝试在应用程序的“当前目录”中打开/创建该文件。
要避免此问题,请使用绝对路径名。
弄清楚该文件实际写入的位置也是有指导意义的。在Windows上,您可以尝试使用搜索工具。在Linux上,find命令是一个很好的选择;
$ sudo find / -name properties.properties | less..。等一等。
请注意,在此特定示例中,刷新和关闭不是必需的。您正在使用未缓冲的FileOutputStream。然而,如果你想这样做,你的代码需要看起来像这样:
File file = new File("program.properties");
try (FileOutputStream fileStream = new FileOutputStream(file)) {
write(fileStream, "username=max");
write(fileStream, "score=12550");
write(fileStream, "level=5");
fileStream.flush();
} catch (IOException ioe) {
System.out.println("Could not write file");
}注意,fileStream是隐式关闭的,因为我们在try之后将其声明为“资源”
发布于 2013-01-22 10:44:30
您的代码中没有错误或异常。该代码片段实际上创建了该文件。尝试通过提供测试路径来测试src。
File file = new File("C:\\Test\\test.txt");上面的修改正确地创建了文件。如前所述,您也可以使用fileStream.flush();。
https://stackoverflow.com/questions/14450641
复制相似问题