我试图读取文件并修改文本,但这样做时我需要保留新行。例如,如果我要读取包含以下内容的文件:
这是一些文字。
这是更多文字。
它只会读作
这是一些文字。这是更多的文字。
我该如何保留这个空间?我认为它与/ n转义字符有关。我已经看过使用BufferReader和FileReader了,但我们还没有在课堂上学到这一点,那还有另一种方法吗?我尝试过的是这样的事情:
if (ch == 10)
{
ch = '\n';
fileOut.print(ch);
}
10是新行的ASCII表代码,所以我认为Java可以识别它,但它没有。
答案 0 :(得分:1)
在Java 8中:
您可以使用以下方式阅读行:
List<String> yourFileLines = Files.readAllLines(Paths.get("your_file"));
然后收集字符串:
String collect = yourFileLines.stream().filter(StringUtils::isNotBlank).collect(Collectors.joining(" "));
答案 1 :(得分:0)
/n
应为\n
if (ch == 10)
{
ch = '\n';
fileOut.print(ch);
}
答案 2 :(得分:0)
问题是你(可能)想要一次读取一行文件,然后你想一次写回一行(保留空行)。
以下源代码执行此操作,它一次读取一行输入文件,并一次将其写回一行(保留空行)。
唯一的问题是......它可能会更改新行,也许您正在读取unix文件并写入dos文件,反之亦然,具体取决于您运行的系统以及文件的源类型读数。
保留原始换行符可能会带来很多复杂性,请阅读BufferedReader和PrintWriter api文档以获取更多信息。
public void process(File input , File output){
try(InputStream in = new FileInputStream(input);
OutputStream out = new FileOutputStream(output)){
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "utf-8"),true);
PrintWriter writer = new PrintWriter( new OutputStreamWriter(out,"utf-8"));
String line=null;
while((line=reader.readLine())!=null){
String processed = proces(line);
writer.println(processed);
}
} catch (IOException e) {
// Some exception management
}
}
public String proces(String line){
return line;
}
答案 3 :(得分:-1)
这是一个错字吗?
ch = '/n';
否则使用
ch = '\n';