繁体   English   中英

从.txt文件读取arraylist

[英]Reading arraylist from a .txt file

我有一个应用程序,用户可以输入某些单词并将这些单词保存到设备上的.txt文件中。 然后,我从该.txt文件创建arraylist。 这是代码:

try {
        Scanner s = new Scanner(recordedFiles);
        recordedFilesArray = new ArrayList<String>();
        while (s.hasNext()){
            recordedFilesArray.add(s.next());
        }
        s.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

现在的问题是,这会将每个单词而不是每一行都放到arraylist中。 因此,如果用户输入(例如)“ test1”,则会将其作为test1添加到arraylist中(很好),但是如果用户输入“ test 1”(带空格),则“ test”和“ 1”将是添加到arraylist作为单独的元素。

显示一个示例它应该如何工作:

文本文件的外观(示例)

测试1

测试2

测试3

现在arraylist的样子:

测试

1个

测试

2

测试

3

arraylist应该是什么样的:

测试1

测试2

测试3

所以我的问题是; 如何将行添加到arraylist,而不是将单词与.txt文件分开

使用.nextLine() ,其功能如下:

使该扫描仪前进到当前行之外,并返回被跳过的输入。 此方法返回当前行的其余部分,但不包括最后的任何行分隔符。 该位置设置为下一行的开始。

正如Matt Ball指出的那样,while循环应使用hasNextLine()而不是hasNext()

    try {
        Scanner s = new Scanner(recordedFiles);
        recordedFilesArray = new ArrayList<String>();
        while (s.hasNextLine()){
            recordedFilesArray.add(s.nextLine());
        }

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
        s.close(); //close file on success or error
    }

文献资料

而不是使用scanner.next(); 使用scanner.nextLine();

您可以使用scanner.nextLine();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM