我有一个应用程序将用户数据存储在文本文件中,我只需要存储唯一的条目(例如电话簿),其中包括以下字段:名称,手机号码和地址,手机号码将是独特的关键。
我使用以下代码编写我的文件:
try {
line = mUserName.getText().toString() + ","
phone.getText().toString() + ","
address.getText().toString();
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
String FILENAME = path + "/UsersData.txt"; // External is the text file name
FileWriter fWriter;
BufferedWriter writer;
fWriter = new FileWriter(FILENAME, true);
writer = new BufferedWriter(fWriter);
writer.append(line);
writer.newLine();
writer.close();
} catch (Exception e) {
result.append("\n" + e.getMessage());
}
我喜欢的是应用程序在写入新数据之前检查文件中是否已存在电话号码,如果是,我们告诉用户它已经在文件中
是否可以在不损害应用程序性能的情况下执行此操作?
还有另一个选项,我们可以将数据存储在数据库中,然后在需要时将其转换为文本文件,会更好吗?
答案 0 :(得分:0)
如果用单行写两个或更多的东西而不用一个字符分隔它们(即:#,%etc)将不合逻辑。如果用户名以数字结尾,则您不会确定此号码是用户名或电话号码的字符。 所以" line = mUserName.getText()。toString()+ phone.getText()。toString()+ address.getText()。toString();"是错的。
您应该创建一个对象类,其字段为userName,phoneNumber和address:
public class Contact {
private String userName;
private String phoneNumber; //should be string it may start with +1 123...
private String address;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
然后将您的联系信息设置为列表,通过以下答案使用GSon和共享偏好设置保存并检索您的联系人列表:store and retrieve a class object in shared preference
您可以通过从共享偏好设置中检索列表来搜索用户联系信息。