Java读取多行文本文件,在最后一个字符后的每行末尾添加分隔符

时间:2016-04-28 17:59:37

标签: java text readline

我有以下文本文件。我一次读每一行并将整行推入一个字符串。目前,我的代码只是逐行读取,而不关心任何空格,所以

random text变为randomtext。有没有办法在行中的最后一个字符后插入一个空格?我尝试了以下代码,但它没有完成这项工作。

d = d.replaceAll("\n", " ");

TextFile.txt的

Text random text random numbers etc. This is a random
text file.

2 个答案:

答案 0 :(得分:4)

读完行后,字符串中没有'\ n'字符。所以,你需要做的是按空间加入这些行。只需使用String.join()

即可

在Java 8中,您只需要:

File f = new File("your file path");
List<String> lines = Files.readAllLines(file.toPath());
String result = String.join(" ", lines);

<强>更新

正如Shire在下面的评论中所指出的,如果文件很大,最好使用缓冲读取器读取每一行并用空格连接它们。

以下是BufferredReader

的使用方法
File file = new File("file_path");
StringBuilder sb = new StringBuilder();

try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
    String line;

    while ((line = reader.readLine()) != null) {
        sb.append(line).append(" ");
    }
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
} catch (IOException e) {
    // TODO Auto-generated catch block
}
String result = sb.toString();

答案 1 :(得分:0)

显然,有更好的方法,例如第一个答案。

我建议使用 Java 8 的另一种方法。这可能不是一个完美的解决方案,而只是解决问题的另一种方法。我使用如下类似的块:

InputStream is = this.getClass().getResourceAsStream(filename);

然后,构建一个stringbuilder以将文件内容提取为包含行的完整字符串。

final StringBuilderWriter writer = new StringBuilderWriter();
    try {
        IOUtils.copy(is, writer, StandardCharsets.UTF_8);
    } catch (IOException e) {
        writer.append("exception", e));
    }
    return writer.toString();

然后您可以在上面返回的字符串上应用.split(\n)

进一步,要遍历拆分字符串中的每一行:

Arrays.asList(string).split("\n"))