Oti*_*Nai 1 java bufferedwriter bufferedreader
我有一个txt文件,我想做的就是打开它并删除所有多个空格,因此它们仅成为一个。我用:
br = new BufferedReader(new FileReader("C:\\Users\\Chris\\Desktop\\file_two.txt"));
bw = new BufferedWriter(new FileWriter("C:\\Users\\Chris\\Desktop\\file_two.txt"));
while ((current_line = br.readLine()) != null) {
//System.out.println("Here.");
current_line = current_line.replaceAll("\\s+", " ");
bw.write(current_line);
}
br.close();
bw.close();
Run Code Online (Sandbox Code Playgroud)
但是,至少对我来说,这似乎是正确的,但文件上没有任何内容。如果我使用system.out.println命令,则不会打印该命令,这意味着执行永远不会在while循环中……我该怎么办?谢谢
您正在读取文件并同时在其上写入内容..不允许...
这样更好的方法是先读取文件,然后将处理后的文本存储在另一个文件中,最后用新文件替换原始文件。
br = new BufferedReader(new FileReader("C:\\Users\\Chris\\Desktop\\file_two.txt"));
bw = new BufferedWriter(new FileWriter("C:\\Users\\Chris\\Desktop\\file_two_copy.txt"));
String current_line;
while ((current_line = br.readLine()) != null) {
//System.out.println("Here.");
current_line = current_line.replaceAll("\\s+", " ");
bw.write(current_line);
bw.newLine();
}
br.close();
bw.close();
File copyFile = new File("C:\\Users\\Chris\\Desktop\\file_two_copy.txt");
File originalFile = new File("C:\\Users\\Chris\\Desktop\\file_two.txt");
originalFile.delete();
copyFile.renameTo(originalFile);
Run Code Online (Sandbox Code Playgroud)
它可能会帮助...