首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sams自学Java在24小时第六版。第一章。20 ConfigWriter.java错误

Sams自学Java在24小时第六版。第一章。20 ConfigWriter.java错误
EN

Stack Overflow用户
提问于 2013-01-22 10:32:59
回答 2查看 138关注 0票数 1

Sams自学Java在24小时第六版作者:罗杰斯·卡登黑德第20章ConfigWriter.java error

我是一个Java初学者。我正在阅读这篇文章标题中列出的Java书。我对这种不能工作的方式感到非常困惑。代码应该创建一个名为program.properties的文件,并将第10到12行的文本放入其中。

代码语言:javascript
复制
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();
}

}

相反,它什么也做不了。它完全是空白的。我非常感谢任何人对这个错误的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-22 11:10:25

最有可能的问题是您对文件将被写入的位置感到困惑。

如果您使用相对路径名(如"program.properties")写入文件,Java将尝试在应用程序的“当前目录”中打开/创建该文件。

  • 如果您直接从命令提示符/ shell运行代码,则当前目录将是shell的当前目录...在运行程序时。
  • 如果使用包装脚本启动,则脚本可能会在启动程序之前更改当前目录。
  • 如果从集成开发环境启动,则集成开发环境将确定当前目录。
  • ,依此类推。

要避免此问题,请使用绝对路径名。

弄清楚该文件实际写入的位置也是有指导意义的。在Windows上,您可以尝试使用搜索工具。在Linux上,find命令是一个很好的选择;

代码语言:javascript
复制
  $ sudo find / -name properties.properties | less

..。等一等。

请注意,在此特定示例中,刷新和关闭不是必需的。您正在使用未缓冲的FileOutputStream。然而,如果你想这样做,你的代码需要看起来像这样:

代码语言:javascript
复制
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之后将其声明为“资源”

票数 0
EN

Stack Overflow用户

发布于 2013-01-22 10:44:30

您的代码中没有错误或异常。该代码片段实际上创建了该文件。尝试通过提供测试路径来测试src。

代码语言:javascript
复制
File file = new File("C:\\Test\\test.txt");

上面的修改正确地创建了文件。如前所述,您也可以使用fileStream.flush();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14450641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档