我正在编写一个程序,该程序将任何特殊字符更改为文件中的空格,然后重新读取文件并获得单词长度的频率。运行时,它似乎可以正常运行,但是当我打开文件时,没有任何变化。
File tempFile = File.createTempFile("buffer", ".tmp");
fw = new FileWriter(tempFile);
reader = new BufferedReader(new FileReader(file));
System.out.println("File opened");
String line = reader.readLine();
// Replace non-alphanumeric symbols with spaces
System.out.println("Replacing non-alphanumeric symbols\n");
while(line != null) {
line = line.replaceAll("a-zA-Z0-9_-", " ");
fw.write(line);
line = reader.readLine();
}
System.out.println("Lines replaced");
file = tempFile;
reader.close();
文件在此代码段上方初始化。
答案 0 :(得分:2)
您的代码有问题。
line.replaceAll()
是一个函数,它返回带有替换字符的新String
对象。
您的代码将替换给定的行,但不会将结果分配给任何变量。
它可能看起来应该像这样:
File tempFile = File.createTempFile("buffer", ".tmp");
fw = new FileWriter(tempFile);
reader = new BufferedReader(new FileReader(file));
System.out.println("File opened");
String line = reader.readLine();
// Replace non-alphanumeric symbols with spaces
System.out.println("Replacing non-alphanumeric symbols\n");
while(line != null) {
line = line.replaceAll("a-zA-Z0-9_-", " "); //assign the replaced value to the variable
fw.write(line);
line = reader.readLine();
}
System.out.println("Lines replaced");
file = tempFile;
reader.close();