我刚刚开始学习Java,我遇到了以下问题,我一直在努力工作几个小时。我想使用PrintWriter
来生成一个简单的文本文件。
我没有得到任何运行时异常,但文件仍未出现在指定的目录中。
public class Main {
public static void main(String[] args) {
try (final PrintWriter writer = new PrintWriter(
new File("c:\test\new\notes.txt"))) {
writer.write("Test note");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
我做错了什么?
答案 0 :(得分:1)
key=float
表示转义字符,因此需要对文字反斜杠字符进行转义。您还可以使用\
,Java将解析平台的正确分隔字符
/
答案 1 :(得分:1)
在writer.flush()
之后添加writer.write("Test note")
,并为Windows路径使用双反斜杠(正如其他答案所暗示的那样)。
答案 2 :(得分:1)
正如Reimeus所说,\
是java中的转义字符。
这意味着包含"\n"
或"\t"
的字符串不代表stringliteral \ n或\ t!
'\n'
代表换行符,'\t'
代表TAB字符!
为了更好地理解,请使用以下代码:
System.out.println("c:\test\new\notes.txt");
不会将c:\test\new\notes.txt
打印到控制台,它会打印
c: est
ew
otes.txt
到控制台!
为了能够在字符串中写入反斜杠,您需要使用'\\'
!
答案 3 :(得分:0)
我认为你的问题有2个部分:
第一个问题已经得到解答,但我认为第二个问题的答案至少同样重要,因为如果写入文件有任何问题,您当前的代码仍会无声地失败。
来自PrintWriter(http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html)的文档:
此类中的方法永远不会抛出I / O异常,尽管它有些异常 施工人员可以。客户可以询问是否有任何错误 通过调用checkError()发生。
因此,必须在每次调用PrintWriter方法后调用checkerror()
,否则您的代码将无法可靠。