如何使用Scanner从Java中读取文件?

时间:2013-10-31 14:13:45

标签: java android file

我有一个文本(“Contacts.txt”)文件,如下所示:

  

Pedro Melendez 7823455555 9395554444 myEmail@stack.com

     

Bob Ramirez 8725551234 9452455543 bob.ramirez@stack.com

     

LuisGonzález8907653456null luis.gonzalez@stack.com

是一个文本文件,我将保存人们的联系信息。 (适用于Android应用程序)

我必须将此联系人信息保存到联系人(列表)类型的列表中。联系人有以下变量:

  • 的firstName
  • lastName的
  • 手机
  • 办公电话
  • 电子邮件

如何使用扫描仪将信息保存在列表中的文本文件中?

我用过这个:

Scanner in = new Scanner(new File("Contacts.txt");

while(in.hasNextLine()){
        this.contactList.add(new Contact(in.next(), in.next(), in.next(), in.next(), in.next()));
}

但这不起作用。将信息保存在列表中的最佳方法在哪里?

谢谢,

2 个答案:

答案 0 :(得分:5)

在进行新联系之前,您需要解析该行

while(in.hasNextLine()){
    String line= in.nextLine();
    String[] tokens = line.split(" ");
    this.contactList.add(new Contact(tokens[0], tokens[1], tokens[2], tokens[3],tokens[4]))

}

我真的不知道你的联系人构造函数是什么样的,因为你没有发布它,但我按照你列出的项目的顺序假设它。

我还假设所有的行看起来都是一样的,因为如果不是这个解决方案会得到一个超出范围的异常,它们都会有所有数据。

答案 1 :(得分:0)

你想要做的是从文本中获取每一行,用space分割线(因为线的每个部分用空格分隔),用你得到的值创建一个对象并保存列表中的对象。

File file = new File("Contacts.txt");
    Scanner in= new Scanner(file);
    while(in.hasNextLine())
    {
         String line = in.nextLine();
         String tokens[] = line.split(" ");
         Contact c = new Contact (tokens[0],tokens[1],tokens[2],tokens[3],tokens[4]) //assume your object is of Contact class
         this.contactList.add(c);
    }