Java 编辑文本文件中的行
我试过在网上找到的这个代码Java 编辑文本文件中的行,java,file-handling,Java,File Handling,我试过在网上找到的这个代码 File file = new File("file.txt"); BufferedReader reader = new BufferedReader(new FileReader(file)); String line = "", oldtext = ""; while((line = reader.readLine()) != null) { oldtext += l
File file = new File("file.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = "", oldtext = "";
while((line = reader.readLine()) != null)
{
oldtext += line + "\n";
}
reader.close();
// replace a word in a file
//String newtext = oldtext.replaceAll("drink", "Love");
//To replace a line in a file
String replace = JOptionPane.showInputDialog("Enter what to replace: ");
String toreplace = JOptionPane.showInputDialog("Enter where to replace: ");
String newtext = oldtext.replaceAll(replace, toreplace);
FileWriter writer = new FileWriter("file.txt");
writer.append(newtext);writer.close();
但是我的不会像这个代码那样输出。此代码的输出如下所示:
取消编辑:
jojo moyes
kim possible
dexter laboratory
编辑:当我输入mary编辑kim时
jojo moyes
mary possible
dexter laboratoty
但我的会像这样
jojo moyes
kim possible
dexter laboratoy
mary possible
我的在编辑之前已经注册了。在寄存器中,也有时间将某些内容存储在文本文件中。如果用户想要编辑他输入的信息中的某些内容,就可以使用编辑功能,这样你就可以得到图片
编辑:这是我的代码
public void Register_Edit_Info() throws IOException{
FileWriter writeFile=new FileWriter("voters.txt", true);
BufferedWriter outFile=new BufferedWriter(writeFile);
File readFile=new File("voters.txt");
BufferedReader read=new BufferedReader(new FileReader(readFile));
String choice2;
String [] secondMenu = {"Register", "Edit", "Delete", "Back"};
do{
choice2=(String)JOptionPane.showInputDialog(null, "Please choose:", "Election 2765", 1, null, secondMenu, secondMenu[0]);
switch(choice2){
case "Register":
String [] menuGender={"Male", "Female"};
String [] menuStatus={"Single", "Married", "Widow(er)", "Legally separated"};
do{
age=Integer.parseInt(JOptionPane.showInputDialog("Age: "));
while(age<18){
JOptionPane.showMessageDialog(null, "Voter should be 18 or above");
age=Integer.parseInt(JOptionPane.showInputDialog("Age: "));
}
name=JOptionPane.showInputDialog("Full Name: ");
gender=(String)JOptionPane.showInputDialog(null, "Gender:", "Election 2765", 1, null, menuGender, menuGender[0]);
if(gender=="Male"){
gender="Male";
}
else{
gender="Female";
}
dBirth=JOptionPane.showInputDialog("Date of Birth: ");
pBirth=JOptionPane.showInputDialog("Place of Birth: ");
address=JOptionPane.showInputDialog("Address\n(Province, City/Municipality, Barangay, House No./Street: ");
status=(String)JOptionPane.showInputDialog(null, "Civil Status:", "Election 2765", 1, null, menuStatus, menuStatus[0]);
if(status=="Single"){
status="Single";
}
else if(status=="Married"){
spouse=JOptionPane.showInputDialog("Spouse Name: ");
status="Married(Spouse: "+spouse+")";
}
else if(status=="Widow(er)"){
status="Widow(er)";
}
else{
status="Legally Separated";
}
citizenship=JOptionPane.showInputDialog("Citizenship:");
job=JOptionPane.showInputDialog("Profession/Occupation: ");
tin=JOptionPane.showInputDialog("Tin Number: ");
father=JOptionPane.showInputDialog("Father's Full Name: ");
mother=JOptionPane.showInputDialog("Mother's Full Name: ");
votersNumber++;
vNumber=Integer.toString(votersNumber);
outFile.append(vNumber+"/"+name+"/"+age+"/"+gender+"/"+dBirth+"/"+pBirth+"/"+address+"/"+status+"/"+citizenship+"/"+job+"/"+father+"/"+mother);
outFile.newLine();
selectYN=JOptionPane.showInputDialog("You are now registered. Do you want to register more?\n[1]Yes [2]No");
}while(!"2".equals(selectYN));
break;
case "Edit":
vNumForEdit=JOptionPane.showInputDialog("Enter voters number: ");
String line=null, oldtext="";
while((line=read.readLine())!=null){
oldtext+=line+"\n";
String [] info=line.split("/");
if(info[0].matches(vNumForEdit)){
String [] forEditMenu={"Name", "Age", "Gender", "Date of Birth", "Place of Birth", "Address", "Civil Status", "Citizenship", "Profession/Occupation", "Father's Name", "Mother's Name"};
forEdit=(String)JOptionPane.showInputDialog(null, line+"\n\nPlease select what you want to edit", "National Election 2765", 1, null, forEditMenu, forEditMenu[0]);
switch(forEdit){
case "Name":
oldName=JOptionPane.showInputDialog("Enter old name: ");
newName=JOptionPane.showInputDialog("Enter new name: ");
String newText = oldtext.replaceAll(oldName, newName);
outFile.append(newText);
break;
}
}
}
case "Delete":
break;
}
}while(choice2!="Back");
read.close();
outFile.close();
}
此答案用于问题的第一部分。编辑前
public static void main(String[] args) throws FileNotFoundException,IOException {
File file = new File("file.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = "", oldtext = "";
while((line = reader.readLine()) != null)
{
oldtext += line + "\n";
}
reader.close();
System.out.println(oldtext);
// replace a word in a file
//String newtext = oldtext.replaceAll("drink", "Love");
//To replace a line in a file
String replace = JOptionPane.showInputDialog("Enter what to replace: ");
String toreplace = JOptionPane.showInputDialog("Enter where to replace: ");
String newtext = oldtext.replaceAll(replace, toreplace);
System.out.println(newtext);
java.io.FileWriter writer = new java.io.FileWriter("file1.txt");
writer.write(newtext);
writer.close();
}
当第一次提示打开时,我写kim和替换位置,我写mary和输出如下。我认为您的代码很好,只是没有对FileWriter使用append。您应该使用FileWriter的写入方法
编辑:
使用不同的文件名,我不知道是否对同一个文件执行读写操作。对于FileWriter和初始化,您可以使用
FileWriter writeFile=new FileWriter("voters1.txt");
如果问题解决了,请告诉我。因此,您有一些代码显示了一些输出,但输出是错误的。但我们不知道:-你的代码是什么,-它应该做什么,-你的输入是什么。那么我们该如何帮助您呢?您是否尝试过使用writer.writenewtext?追加将在现有文本的末尾添加新文本,而写入将覆盖以前的文本。这似乎不是问题,但值得一试。@JBNizet我已经发布了代码hehehe:@chalarangelo我现在尝试了,但仍然是samei编辑了我的问题,我发布了我的代码,请检查,因为当我尝试使用write时,代码仍然是一样的。您尝试运行的代码是我在一个工作完美的站点中使用的代码。但是,当我在代码中实现它时,它将不再起作用。我应该编写另一个FileWriter还是只是更改文件名?只需更改名称。哦,什么都没有发生: