文件未被更改

问题描述 投票:0回答:1

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

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

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

java file file-writing
1个回答
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();
© www.soinside.com 2019 - 2024. All rights reserved.