我有以下文本文件。我一次读每一行并将整行推入一个字符串。目前,我的代码只是逐行读取,而不关心任何空格,所以
random text
变为randomtext
。有没有办法在行中的最后一个字符后插入一个空格?我尝试了以下代码,但它没有完成这项工作。
d = d.replaceAll("\n", " ");
TextFile.txt的
Text random text random numbers etc. This is a random
text file.
答案 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"))