【发布时间】:2020-03-05 05:12:35
【问题描述】:
我从hackerrank 复制了这段代码。当我运行这种代码时它工作正常(这种方式,使用 System.getenv("OUTPUT_PATH") 关键字)但我将此代码复制到我的电脑并尝试运行该代码。
但我得到了下面的错误。这个 System.getenv("OUTPUT_PATH") 关键字是否仅在 Hackerrank 中有效?我知道如何使用缓冲写入器类打印到文本文件,但我无法理解此代码行。
请帮助我提高我的知识。
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
String s = "Hello world";
bw.write(s);
bw.newLine();
bw.close();
}
我在更多的hackerrank问题中看到了这个代码,我需要知道我们为什么要使用这个...... 这是错误信息,
Exception in thread "main" java.lang.NullPointerException
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:226)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:124)
at java.base/java.io.FileWriter.<init>(FileWriter.java:66)
at com.company.Main.main(Main.java:8)
【问题讨论】:
-
欢迎来到 Stack Overflow。请提供您所看到的错误的详细信息 - “我收到错误”并不像解释这是编译时错误还是异常那样有帮助,并带有确切的消息(如果是异常,还有堆栈跟踪)。
-
@JonSkeet 我已经用错误消息更新了问题
-
对,所以看起来您没有
OUTPUT_PATH环境变量,所以System.getenv("OUTPUT_PATH")返回 null,并且您将该 null 引用传递给FileWriter构造函数。 -
@JonSkeet 我该如何解决这个错误?
-
要么指定 OUTPUT_PATH 环境变量,要么找到其他方式来指定要写入的文件 - 无论是硬编码路径,还是通过命令行参数接受它。我不知道您要写入哪个文件或如何配置它,因此很难为您提供帮助。
标签: java bufferedwriter