Vla*_*che 6 java file-io text-files
假设我有以下代码:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想做的就是在文本文件中写一些东西,在我的例子中"有些文字出于某种原因".然后从我的文件中读取数据,最后从我的文件中更改我的文本中的"有些文本出于某种原因"在"有些文本中出于某种原因".我运行了代码,但所有这一切都是在我的文件中写入"有些文字出于某种原因".
我试图弄清楚我的代码中可能出现的问题,但不幸的是,这是徒劳的.任何建议或改写都非常感谢我.
将您的代码更改为:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是你正在调用br.readLine()两次,这会激发应用程序读取line1然后是line2,在你的情况下,你只有一行,这意味着你的程序以条件形式读取它,并且当它将它声明为变量时verify,它正在停止,因为您没有更多数据来读取您的文件.
| 归档时间: |
|
| 查看次数: |
83256 次 |
| 最近记录: |