[英]How to Update or delete a specific line from a .txt file?
我已经有了将数据插入文本文件并进行搜索的方法。 现在,我需要“更新”和“删除”所选记录的方法。
这是我到目前为止所做的
private void InsertbuttonActionPerformed(java.awt.event.ActionEvent evt) {
fileWriter = null;
try {
String phone = Phone.getText();
String fname = Fname.getText();
String lname = Lname.getText();
String nic = NIC.getText();
String city = City.getSelectedItem().toString();
fileWriter = new FileWriter(file, true);
fileWriter.append(phone + "|" + fname + "|" + lname + "|" + nic + "|" + city+ "|");
fileWriter.append("\r\n");
fileWriter.flush();
JOptionPane.showMessageDialog(InsertGUI.this, "<html> " + phone + " <br> Successfully saved! </html>");
Phone.setText(null);
NIC.setText(null);
Fname.setText(null);
Lname.setText(null);
City.setSelectedIndex(0);
} catch (IOException ex) {
Logger.getLogger(InsertGUI.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
fileWriter.close();
} catch (IOException ex) {
Logger.getLogger(InsertGUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
private void searchbuttonActionPerformed(java.awt.event.ActionEvent evt) {
try {
fileReader = new FileReader(file);
BufferedReader br = new BufferedReader(fileReader);
String selectedphone = SearchF.getText();
String content = "";
String temp = "";
try {
while ((temp = br.readLine()) != null) {
content += temp;
}
} catch (IOException ex) {
Logger.getLogger(UpdateGUI.class.getName()).log(Level.SEVERE, null, ex);
}
HashMap<String, String> map = new HashMap();
StringTokenizer stringTokenizer = new StringTokenizer(content, "|");
boolean found = false;
while (stringTokenizer.hasMoreTokens()) {
String phone = stringTokenizer.nextElement().toString();
String fname = stringTokenizer.nextElement().toString();
String lname = stringTokenizer.nextElement().toString();
String nic = stringTokenizer.nextElement().toString();
String city = stringTokenizer.nextElement().toString();
if (phone.equalsIgnoreCase(selectedphone)) {
Phone.setText(phone);
NIC.setText(nic);
Fname.setText(fname);
Lname.setText(lname);
switch (city) {
case "Ambalangoda":
City.setSelectedIndex(0);
break;
case "Ampara":
City.setSelectedIndex(1);
break;
case "Anuradhapura":
City.setSelectedIndex(2);
break;
case "Avissawella":
City.setSelectedIndex(3);
break;
case "Badulla":
City.setSelectedIndex(4);
break;
case "Balangoda":
City.setSelectedIndex(5);
break;
}
found = true;
}
}
if (!found) {
JOptionPane.showMessageDialog(UpdateGUI.this, "Phone number not found!");
Phone.setText(null);
NIC.setText(null);
Fname.setText(null);
Lname.setText(null);
City.setSelectedIndex(0);
}
} catch (FileNotFoundException ex) {
Logger.getLogger(UpdateGUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
有人可以帮我吗? 我想要以下方法:
private void UpdatebuttonActionPerformed(java.awt.event.ActionEvent evt) {
}
private void DeleteButtonActionPerformed(java.awt.event.ActionEvent evt) {
}
提前致谢! :)
我给你一个我发现的例子。 在此示例中,我将替换行内的字符串。 您可以看到在我的情况下,我正在从txt阅读。
/ ******
public static void replaceSelected(String replaceWith, String type) {
try {
// input the file content to the String "input"
BufferedReader file = new BufferedReader(new FileReader("notes.txt"));
String line;String input = "";
while ((line = file.readLine()) != null) input += line + '\n';
file.close();
System.out.println(input); // check that it's inputted right
// this if structure determines whether or not to replace "0" or "1"
if (Integer.parseInt(type) == 0) {
input = input.replace(replaceWith + "1", replaceWith + "0");
}
else if (Integer.parseInt(type) == 1) {
input = input.replace(replaceWith + "0", replaceWith + "1");
}
// check if the new input is right
System.out.println("----------------------------------" + '\n' + input);
// write the new String with the replaced line OVER the same file
FileOutputStream fileOut = new FileOutputStream("notes.txt");
fileOut.write(input.getBytes());
fileOut.close();
} catch (Exception e) {
System.out.println("Problem reading file.");
}
}
public static void main(String[] args) {
replaceSelected("Do the dishes","1");
}
* /
结果:
原版的:
原始文本文件内容:
洗碗0喂狗0打扫房间1输出:
洗碗0喂狗0
洗碗1喂狗0打扫房间1
最近的输出:
洗碗1(已变)喂狗0打扫房间1
也许这个例子对你有帮助。
问候!
读取数据到字符串。 使用string.replace(forDelte,“”)。 然后只需重写为txt文件即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.