这是一个简单的“文件编写程序”,它从给定目录中扫描文本文件,并将其内容存储到初始化为“ 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);
}
}}
答案 0 :(得分:1)
\ r是回车符,\ n是换行符,但是一般来说,您必须查看文件的编码类型,因为换行符可能会有所不同。
CR,LF和CRLF都是常用的行尾字符。在PC领域,CRLF在Windows应用程序中很常见,CR在{{3}}中很常见,LF在现代Classic Mac OS和面向Unix的操作系统(macOS,{{ 3}}等)。参见BSD。
如果您遇到其中一些问题,则必须记住,不同的charecter编码对于新行可能具有不同的表示法。例如,Word可能使用UTF-8,而记事本可能使用ISO-8859-1,并且您的默认系统设置为另一种编码类型,并且不确定每种编码都共享相同的换行符。当您使用\ n字符时,您正在输入系统的新行,因此,假设您正在Windows上工作,这可以显示您可以在Word中看到的新行,但是如果要在Mac文本编辑器中打开同一文件如果使用不同的字符编码,则看不到新行。
答案 1 :(得分:0)
尝试:
words= words.concat(scan.nextLine() + "\r\n" );
nextLine()
扫描每一行而没有换行符。因此,您必须手动插入一个。
另外,在Linux和MacOS计算机上,下一行是\n
,但在大多数Windows计算机上,下一行是\r\n
。