文件未更改

时间:2019-03-22 22:28:17

标签: java file file-writing

我正在编写一个程序,该程序将任何特殊字符更改为文件中的空格,然后重新读取文件并获得单词长度的频率。运行时,它似乎可以正常运行,但是当我打开文件时,没有任何变化。

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();

文件在此代码段上方初始化。

1 个答案:

答案 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();