Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在文本文件中仅存储唯一的条目_Java_Android - Fatal编程技术网

Java 如何在文本文件中仅存储唯一的条目

Java 如何在文本文件中仅存储唯一的条目,java,android,Java,Android,我有一个将用户数据存储在文本文件中的应用程序,我只需要存储唯一的条目(例如电话簿),其中在以下字段中:姓名、手机号码和地址,手机号码将是唯一的密钥 我正在使用以下代码编写文件: try { line = mUserName.getText().toString() + "," phone.getText().toString() + "," address.getText().toString(); String pat

我有一个将用户数据存储在文本文件中的应用程序,我只需要存储唯一的条目(例如电话簿),其中在以下字段中:姓名、手机号码和地址,手机号码将是唯一的密钥

我正在使用以下代码编写文件:

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());
}
我希望应用程序在写入新数据之前检查文件中是否已经存在电话号码,如果已经存在,我们会告诉用户电话号码已经存在于文件中

是否可以在不损害应用程序性能的情况下执行此操作


还有另一种选择,我们可以将数据存储在数据库中,然后在他们要求时将其转换为文本文件,这样会更好吗?

如果您使用单行写入两个或多个内容,而不使用字符(例如:#,%等)将它们分开,那么将不符合逻辑。若用户名以数字结尾,您将无法确定该数字是用户名或电话号码的字符。 所以“line=mUserName.getText().toString()+phone.getText().toString()+address.getText().toString();”是错误的

您应该创建一个对象类,其中包含用户名、电话号码和地址等字段,如下所示:

    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保存和检索您的联系人列表,并通过以下答案共享首选项:


您可以通过从共享首选项中检索列表来搜索用户联系信息。

如果您用一行书写两个或多个内容,而不使用字符(例如:#、%等)分隔它们,则不符合逻辑。若用户名以数字结尾,您将无法确定该数字是用户名或电话号码的字符。 所以“line=mUserName.getText().toString()+phone.getText().toString()+address.getText().toString();”是错误的

您应该创建一个对象类,其中包含用户名、电话号码和地址等字段,如下所示:

    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保存和检索您的联系人列表,并通过以下答案共享首选项:


您可以通过从共享首选项中检索列表来搜索用户联系信息。

您可以逐行从文本文件中检索数据吗?Java有一个保持唯一值的集合。您可以读取要设置的文件行,添加值,并将所有行从Set设置为fileI我是java和android的初学者,因此如果有一些示例或链接可供阅读,我将不胜感激。感谢friendscan从文本文件中逐行检索数据?Java有一个保持唯一值的集合。您可以读取要设置的文件行,添加值,并将所有行从Set设置为fileI我是java和android的初学者,因此如果有一些示例或链接可供阅读,我将不胜感激。谢谢朋友我使用了分隔符,但我在写问题时忘了添加分隔符,我编辑了我的问题。对于你的回答,作为java和android的新手,这对我来说将是非常复杂的,如果有成千上万的联系人,它将如何影响性能?那么,使用数据库存储联系人并将电话号码设置为唯一字段怎么样?如果有数千个数据,使用数据库是更好的主意。共享首选项最好存储较少的数据,例如用户设置、用户配置文件数据……我使用了分隔符,但在编写问题时忘记添加分隔符,我编辑了问题。对于你的回答,作为java和android的新手,这对我来说将是非常复杂的,如果有成千上万的联系人,它将如何影响性能?那么,使用数据库存储联系人并将电话号码设置为唯一字段怎么样?如果有数千个数据,使用数据库是更好的主意。共享首选项最好存储较少的数据,例如用户设置、用户配置文件数据。。。