在读取文件时保留新行

时间:2017-03-13 16:49:32

标签: java

我试图读取文件并修改文本,但这样做时我需要保留新行。例如,如果我要读取包含以下内容的文件:

  

这是一些文字。

     

这是更多文字。

它只会读作

  

这是一些文字。这是更多的文字。

我该如何保留这个空间?我认为它与/ n转义字符有关。我已经看过使用BufferReader和FileReader了,但我们还没有在课堂上学到这一点,那还有另一种方法吗?我尝试过的是这样的事情:

if (ch == 10)
{
   ch = '\n';
   fileOut.print(ch);
}

10是新行的ASCII表代码,所以我认为Java可以识别它,但它没有。

4 个答案:

答案 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';