在Java中创建,编写和编辑相同的文本文件
问题内容:
假设我有以下代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class EditFile {
public static void main(String[] args) {
try{
String verify, putData;
File file = new File("file.txt");
file.createNewFile();
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("Some text here for a reason");
bw.flush();
bw.close();
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while( br.readLine() != null ){
verify = br.readLine();
if(verify != null){
putData = verify.replaceAll("here", "there");
bw.write(putData);
}
}
br.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
我要做的就是在文本文件中写一些东西,在我的例子中是“出于某种原因在这里写一些文本”。然后从文件中读取数据,最后从“有原因的一些文本”中的“有原因的一些文本”中更改文件中的文本。我运行了代码,但是所有发生的事情是在文件“某些原因在这里写”中。
我试图找出代码中可能出什么问题,但不幸的是,这是徒劳的。我非常感谢任何建议或重写。
问题答案:
将您的代码更改为:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class EditFile {
public static void main(String[] args) {
try{
String verify, putData;
File file = new File("file.txt");
file.createNewFile();
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("Some text here for a reason");
bw.flush();
bw.close();
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while( (verify=br.readLine()) != null ){ //***editted
//**deleted**verify = br.readLine();**
if(verify != null){ //***edited
putData = verify.replaceAll("here", "there");
bw.write(putData);
}
}
br.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
问题是您要调用br.readLine()
两次,这会导致应用程序先读取第1行,然后读取第2行,在您的情况下,您只有一行,这意味着您的程序以条件形式读取了它,并且在将其声明为变量时verify
,它正在停止,因为您没有更多数据可读取文件。