PrintWriter输出文件不在那里虽然没有抛出异常

时间:2015-09-25 11:56:03

标签: java text-files printwriter

我刚刚开始学习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);
        }
    }
}

我做错了什么?

4 个答案:

答案 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个部分:

  1. 为什么代码不起作用?
  2. 为什么没有抛出异常?
  3. 第一个问题已经得到解答,但我认为第二个问题的答案至少同样重要,因为如果写入文件有任何问题,您当前的代码仍会无声地失败。

    来自PrintWriter(http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html)的文档:

      

    此类中的方法永远不会抛出I / O异常,尽管它有些异常   施工人员可以。客户可以询问是否有任何错误   通过调用checkError()发生。

    因此,必须在每次调用PrintWriter方法后调用checkerror(),否则您的代码将无法可靠。