这是一个简单的“文件写入程序”,它从给定目录扫描文本文件并将其内容存储到初始化为“words”的字符串中。现在,当内容连接到字符串中时。空格和换行符将被保留。但是,当我尝试将该字符串写入文件时。空格被保留,但换行符丢失。 例如: 原始字符串: 你好。我被困在 UMT 了。 带我离开这里。 文件写入: 你好,我被困在 UMT 了。带我离开这里。 注意到新行没有被保留吗?没有换行吗?没有“\n”?
package testing;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Reader{ {
String words="this is a a new file created by me :D \n";
File file = new File("C:/file.txt");
try {
Scanner scan= new Scanner(file);
while(scan.hasNextLine()){
words= words.concat(scan.nextLine() + "\r ");
}
} catch (FileNotFoundException ex) {
Logger.getLogger(Reader.class.getName()).log(Level.SEVERE, null,
ex);
}
System.out.println(words);
try {
FileWriter writer = new FileWriter("D:/newfile.txt");
writer.write(words);
writer.close();
} catch (IOException ex) {
Logger.getLogger(Reader.class.getName()).log(Level.SEVERE, null, ex);
}
}}
最佳答案
\r 是回车符,\n 是新行,但作为一般规则,您必须查看文件的编码类型,因为新行字符可能因一种编码而异。
CR 、LF 和 CRLF 都是常用的行尾字符。在 PC 领域,CRLF 在 Windows 应用程序中很常见,CR 在 Classic Mac OS 上很常见。 ,而 LF 在现代很常见 macOS和面向 Unix 的操作系统( BSD 、 Linux 等)。请参阅Wikipedia .
更多信息
如果您遇到其中一些问题,您必须记住,不同的字符编码可能对新行有不同的表示法。例如,Word 可能使用 UTF-8,记事本可能使用 ISO-8859-1,并且您的默认系统设置为另一种编码类型,并且不确定每个编码都共享相同的换行符。当您使用\n 字符时,您正在键入系统的新行,因此假设您正在 Windows 上工作,这可以显示您可以在 Word 中看到的新行,但如果您将在 Mac 文本编辑器上打开同一文件如果它们使用不同的字符编码,您将看不到新行。
关于java - 文件写入器正在写入不带 "Line breaks"的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56311937/