我需要从文件中删除某些行,该文件是我从文件读入GUI的联系人列表。当我到达要删除的联系人时,我的程序应该从文件中删除该联系人。我试过这样做,但它没有用。
以下是我目前正在使用的代码:
String temp=txtname.getText();
for (Contact Contact:contacts)
{
if (temp.equals(Contact.getname()));
{
txtname.setText("");
txtsurname.setText("");
txtphone.setText("");
txtmobile.setText("");
txtaddress.setText("");
txtpostcode.setText("");
contacts.remove(Contact);
contacts.remove(Contact);
contacts.remove(Contact);
contacts.remove(Contact);
contacts.remove(Contact);
contacts.remove(Contact);
}
}
我的联系课程是:
public class Contact {
static void add(String text) {
}
public String name;
public String surname;
public String phone;
public String mobile;
public String address;
public String postcode;
public Contact(){}
public Contact(String name, String surname, String phone,
String mobile, String address, String postcode)
{
this.name = name;
this.surname = surname;
this.phone = phone;
this.mobile = mobile;
this.address = address;
this.postcode = postcode;
}
public String getname()
{
return this.name;
}
public String getsurname()
{
return this.surname;
}
public String getphone()
{
return this.phone;
}
public String getmobile()
{
return this.mobile;
}
public String getaddress()
{
return this.address;
}
public String getpostcode()
{
return this.postcode;
}
public void setname(String name)
{
this.name = name;
}
public void setsurname(String surname)
{
this.surname = surname;
}
public void setphone(String phone)
{
this.phone = phone;
}
public void setmobile(String mobile)
{
this.mobile = mobile;
}
public void setaddress(String address)
{
this.address = address;
}
public void setpostcode(String postcode)
{
this.postcode = postcode;
}
}
我猜它会从arraylist中删除它,但我不确定该程序如何知道从文件中删除的内容。
感谢。
答案 0 :(得分:1)
修改内部列表不会更改文件。没有自动同步这两者的方法。您必须将数组保存回文件以进行更新。
答案 1 :(得分:1)
无法从文件中间删除任何内容。 唯一的方法是每次更改某些内容时重写文件。
答案 2 :(得分:1)
你可以使用random access file但这对于这项任务来说似乎过度杀戮。 最好的方法是让remove函数将整个文件写回磁盘。
答案 3 :(得分:0)
文件可以重新编辑或附加到。在你的情况下,你将不得不重写它。还有其他方法,但在这里它们会有点过分。
String temp = txtname.getText();
for (Contact contact : contacts) {
if (temp.equals(contact.getname())) {
contacts.remove(contact);
break;
}
}
修复了代码的许多常见问题
public class Contact {
private String name;
private String surname;
private String phone;
private String mobile;
private String address;
private String postcode;
public Contact(String name, String surname, String phone, String mobile, String address, String postcode) {
this.name = name;
this.surname = surname;
this.phone = phone;
this.mobile = mobile;
this.address = address;
this.postcode = postcode;
}
public String getName() {
return this.name;
}
public String getSurname() {
return this.surname;
}
public String getPhone() {
return this.phone;
}
public String getMobile() {
return this.mobile;
}
public String getAddress() {
return this.address;
}
public String getPostcode() {
return this.postcode;
}
}
答案 4 :(得分:0)
如果您没有该文件的特定格式,那么我建议您使用默认序列化并序列化联系人列表。像这样,
//To serialize
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File("D:/newfile.txt")));
out.writeObject(contacts);
//To deserialize
ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File("d:/newFile.txt")));
contacts = (ArrayList<Contact>)in.readObject();
首先,您必须在Serializable
课程中实施Contact
界面。
或者,如果您需要对文件格式进行更多控制,请使用标准XML类或JSON库。