Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PrintWriter输出文件不存在,尽管没有引发异常_Java_Text Files_Printwriter - Fatal编程技术网

Java PrintWriter输出文件不存在,尽管没有引发异常

Java PrintWriter输出文件不存在,尽管没有引发异常,java,text-files,printwriter,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\

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

我做错了什么?

\
表示转义字符,因此需要对文本反斜杠字符本身进行转义。您还可以使用
/
,Java将为平台解析正确的分隔字符

try (final PrintWriter writer = new PrintWriter("c:\\test\new\\notes.txt")) {

\
表示转义字符,因此需要对文字反斜杠字符本身进行转义。您还可以使用
/
,Java将为平台解析正确的分隔字符

try (final PrintWriter writer = new PrintWriter("c:\\test\new\\notes.txt")) {

\
表示转义字符,因此需要对文字反斜杠字符本身进行转义。您还可以使用
/
,Java将为平台解析正确的分隔字符

try (final PrintWriter writer = new PrintWriter("c:\\test\new\\notes.txt")) {

\
表示转义字符,因此需要对文字反斜杠字符本身进行转义。您还可以使用
/
,Java将为平台解析正确的分隔字符

try (final PrintWriter writer = new PrintWriter("c:\\test\new\\notes.txt")) {

writer.write.write(“测试说明”)
之后添加
writer.flush()
,并对Windows路径使用双反斜杠(如其他答案所建议)。

writer.write(“测试说明”)
之后添加
writer.flush()
,并对Windows路径使用双反斜杠(如其他答案所建议).

编写器之后添加
writer.flush()
。编写(“测试说明”)
,并对Windows路径使用双反斜杠(正如其他答案所建议的)。

编写器之后添加
writer.flush()
,并对Windows路径使用双反斜杠(正如其他答案所建议的那样).

正如Reimeus所说,
\
是java中的转义字符。 这意味着包含
“\n”
“\t”
的字符串不代表stringliteral\n或\t

'\n'
表示换行符,
'\t'
表示制表符

为了更好地理解,请使用以下代码:

System.out.println("c:\test\new\notes.txt");
不会将
c:\test\new\notes.txt打印到控制台,它会打印

c:    est
ew
otes.txt
到控制台去


要能够在字符串中写入反斜杠,您需要使用
'\\'

正如Reimeus所说,
\
是java中的转义字符。 这意味着包含
“\n”
“\t”
的字符串不代表stringliteral\n或\t

'\n'
表示换行符,
'\t'
表示制表符

为了更好地理解,请使用以下代码:

System.out.println("c:\test\new\notes.txt");
不会将
c:\test\new\notes.txt打印到控制台,它会打印

c:    est
ew
otes.txt
到控制台去


要能够在字符串中写入反斜杠,您需要使用
'\\'

正如Reimeus所说,
\
是java中的转义字符。 这意味着包含
“\n”
“\t”
的字符串不代表stringliteral\n或\t

'\n'
表示换行符,
'\t'
表示制表符

为了更好地理解,请使用以下代码:

System.out.println("c:\test\new\notes.txt");
不会将
c:\test\new\notes.txt打印到控制台,它会打印

c:    est
ew
otes.txt
到控制台去


要能够在字符串中写入反斜杠,您需要使用
'\\'

正如Reimeus所说,
\
是java中的转义字符。 这意味着包含
“\n”
“\t”
的字符串不代表stringliteral\n或\t

'\n'
表示换行符,
'\t'
表示制表符

为了更好地理解,请使用以下代码:

System.out.println("c:\test\new\notes.txt");
不会将
c:\test\new\notes.txt打印到控制台,它会打印

c:    est
ew
otes.txt
到控制台去


要能够在字符串中写入反斜杠,您需要使用
'\\'

我认为你的问题有两个部分:

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

    从PrintWriter()的文档中:

    此类中的方法从不抛出I/O异常,尽管有些 建设者可以。客户可询问是否存在任何错误 调用checkError()时发生


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

    我认为您的问题有两个部分:

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

    从PrintWriter()的文档中:

    此类中的方法从不抛出I/O异常,尽管有些 建设者可以。客户可询问是否存在任何错误 调用checkError()时发生


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

    我认为您的问题有两个部分:

  • 为什么代码不起作用
  • 为什么没有抛出异常
  • 第一个问题已经得到了回答,但我认为第二个问题的答案至少同样重要,因为如果写入fi时出现任何问题,您当前的代码仍然会无声地失败