Java 如何替换文本行

Java 如何替换文本行,java,text,file-io,Java,Text,File Io,我正在尝试替换文件中的特定文本行。我有一个问题,因为下面的代码更改了每行代码上的每个ID String filepath = "data.txt"; String newID = textFId.getText() String newRoadName = textFRname.getText(); String newRoadNumber = textFRnumber.getText(); String newCarType = textFCart

我正在尝试替换文件中的特定文本行。我有一个问题,因为下面的代码更改了每行代码上的每个ID

String filepath       = "data.txt";
String newID          = textFId.getText()
String newRoadName    = textFRname.getText();
String newRoadNumber  = textFRnumber.getText();
String newCarType     = textFCartype.getText();

String tempFile = "datatemp.txt";
File oldFile = new File(filepath);
File newFile = new File(tempFile);

String ID         = "";
String RoadName   = "";
String RoadNumber = "";
String CarType    = "";

try {

 FileWriter     fw = new FileWriter(tempFile, true);
 BufferedWriter bw = new BufferedWriter(fw);
 PrintWriter    pw = new PrintWriter(bw);

 x = new Scanner(new File(filepath));
 x.useDelimiter("[,\n]");

 while(x.hasNext()) {
 ID         = x.next();
 RoadName   = x.next();
 RoadNumber = x.next();
 CarType    = x.next();

      if(ID.equals(newID)) {
 System.out.println(newID);
 pw.println(newID + "," + newRoadName + "," + newRoadNumber + "," + newCarType);
 } else {
 pw.println(ID + "," + RoadName + "," + RoadNumber + "," + CarType);
 System.out.println(newID);
 }

 }
 x.close();
 pw.flush();
 pw.close();
 oldFile.delete();
 File dump = new File(filepath);
 newFile.renameTo(dump);
 }

 catch (Exception e3){
 System.out.println("UPDATE ERROR!!");
 }
我的文本文件是:

1,PO,100,GB
2,PO,101,GB
3,PO,102,GB
4,PO,103,GB
当我更新一行时,我的输出应该是:

1,PO,100,GB
2,PO,101,GB
3,PO,102,GB
4,PO,104,GB
然而,我的输出结果是:

4,PO,104,GB
4,PO,104,GB
4,PO,104,GB
4,PO,104,GB

这一部分是我们没有遵循的:

    String newID          = textFId.getText()
    String newRoadName    = textFRname.getText();
    String newRoadNumber  = textFRnumber.getText();
    String newCarType     = textFCartype.getText();

textFId、textFRname、textFRnumber和textFCartype从哪里来?

newID不应该等于其中的.next()吗?像@TomBunting所说的那样更好地清理你的代码,你会发现通过确保你的代码干净、简洁和可编译(即使它目前没有达到你期望的效果),你会得到更多有用的答案——看这似乎是可行的。有什么问题吗?只需使用
文件.readAllLines
。更容易的是,代码应该更新行的一部分。由于某种原因,我需要能够立即更新该行的每个部分。如果我尝试将该行的ID部分更新为不同的数字,则会将每行上的每个ID更改为相同的数字。我也希望能够改变线路的任何部分。我的JTable中有用户文本字段来执行此操作。这些部分来自以下文本字段:
btnUpdate.addActionListener(new ActionListener(){@Override public void actionPerformed(ActionEvent e){//I=所选行的索引int I=table.getSelectedRow();if(I>=0){model.setValueAt(textFId.getText(),i,0);model.setValueAt(textFRname.getText(),i,1);model.setValueAt(textFRnumber.getText(),i,2);model.setValueAt(textFCartype.getText(),i,3);}
很抱歉,我试图格式化此答案时遇到困难…代码来自按钮。
String newID=textFId.getText()
指的是文本字段用户输入字段,当单击更新按钮时,它会更新该行该部分的数据