Java 我不知道为什么我得到这个文件存在,但仍然显示错误

Java 我不知道为什么我得到这个文件存在,但仍然显示错误,java,Java,打印路径“D:\file”中所有目录的名称,并使用BufferedReader读取“D:\file\new.txt”文件的所有内容,然后使用BufferedWriter.exe将其写入同一位置的另一个文件copyOfNew.txt文件 代码如下:- import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.io.BufferedReader; import java.io.Bu

打印路径“D:\file”中所有目录的名称,并使用BufferedReader读取“D:\file\new.txt”文件的所有内容,然后使用BufferedWriter.exe将其写入同一位置的另一个文件copyOfNew.txt文件

代码如下:-

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class thread {

    public static void main(String[] args) throws IOException {

        String dirName = "D:\\file";

        Files.list(new File(dirName).toPath())
                .limit(10)
                .forEach(path -> {
                    System.out.println(path);
                });
        try (FileReader reader = new FileReader("D:\\file\new.txt");
             BufferedReader br = new BufferedReader(reader)) {

            // read line by line
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

        } catch (IOException e) {
            System.err.format("IOException: %s%n", e);
        }
        try (FileWriter writer = new FileWriter("copyOfNew.txt");
     BufferedWriter bw = new BufferedWriter(writer)) {

    bw.write(dirName);

}        catch (IOException e) {
    System.err.format("IOException: %s%n", e);
}
    }
}
我收到的错误:-

D:\file\new.txt
IOException: java.io.FileNotFoundException: D:\file
ew.txt (The filename, directory name, or volume label syntax is incorrect)
BUILD SUCCESSFUL (total time: 1 second)

您必须将
\n
转义为
\\n
,否则会添加一个换行符,正如您在异常原因中看到的那样。

字符串文字将
\n
解释为一个换行符(而
\
解释为
\
)。每个反斜杠都需要转义:

FileReader reader = new FileReader("D:\\\\file\\new.txt")

用反斜杠转义告诉解析器以下字符(在本例中是另一个反斜杠)应该用作字符串的文字部分,而不是特殊字符。

Java编译器正在用换行符替换文件路径
“D:\\file\new.txt”
中的\n

为了避免这种情况并简化一切,请使用独立于平台的目录分隔符/而不是仅限windows的字符\:

reader = new FileReader("D:/file/new.txt")

像在
“D:\\file\\new.txt”
中一样使用双反斜杠也可以,但是您必须记住要一致地使用它

“D:\\file\new.txt”
应该是
dirName+“\\new.txt”
“copyOfNew.txt”应该是
dirName+“\\copyOfNew.txt”
。FileWriter和BufferedWriter声明应该位于reading while循环之上,并且直接位于
System.out.println(line)之下应该是:
bw.append(line+System.lineSeparator())。不要忘记关闭你的读者和作者,除非使用了Try With Resources。我只能在阅读这个问题的标题时猜出你在问什么。请多加努力:“我”应该用大写字母写,下面的句子没有任何意义。你是什么意思?你的意思是,你不能写这个文件吗?实际上我想写另一个文件,但它不工作。请看最后几行代码。你的意思是为什么编译器用换行符替换\\n?因为这就是如何在字符串中插入换行符的方法