[英]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.