我有一个包含通过换行分隔字的文本文件,如以下格式:如何从文本文件中的单词填充ArrayList?
>hello
>world
>example
如何创建一个ArrayList和每个单词存储为一个元素?
我有一个包含通过换行分隔字的文本文件,如以下格式:如何从文本文件中的单词填充ArrayList?
>hello
>world
>example
如何创建一个ArrayList和每个单词存储为一个元素?
你可以使用apache commons FileUtils.readLines()
。
我认为它返回的List
已经是一个ArrayList
,但你可以使用构造ArrayList(Collection)
,以确保您获得一个。
你读逐行为文件创建一个ArrayList,并且如果line.length> 0,则将line.substring(1)添加到已定义的ArrayList。
我使用了line.substring(1),因为他的示例包含了他在每行开头都有一个'>'。 – dexametason 2012-04-01 07:57:57
我把文件放在“C:\ file.txt”;如果运行以下命令,则会使用单词填充ArrayList并打印它们。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception {
File file = new File("C:\\file.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
List<String> lines = new ArrayList<String>();
String line = br.readLine();
while(line != null) {
lines.add(line.replace(">", ""));
line = br.readLine();
}
for(String l : lines) {
System.out.println(l);
}
}
}
正如亚当的答案中提到的,我建议使用InputStreamReader并指定编码。此外,你应该有一个try/finally块,这样你就可以关闭文件。 (在一个小样本中不是问题,但我不希望OP将这些代码直接提取到实用程序方法中。) – 2012-04-01 08:19:00
是的,它可以使用一些抛光,但它确实会提出问题。 – Tom 2012-04-01 12:50:43
我敢肯定,他们是很多,与1号线做这个库的,但这里有一个“纯粹”的Java实现:
注意,我们已经“包装” /“装饰”等一个标准的FileReader(它只能一次读取一个字节)和一个BufferedReader,它为我们提供了一个更好的readLine()方法。
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(
new FileInputStream("test.txt"),
Charset.forName("ISO-8859-1")));
List<String> lines = new ArrayList<String>();
String line;
while ((line = reader.readLine()) != null) {
lines.add(line);
}
System.out.println(lines);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
reader.close();
}
}
请注意,这将使用默认的字符编码,这通常不是一个好主意。我建议使用包装在FileInputStream周围的InputStreamReader。此外,'close'调用应该在'finally'块中。我建议让'IOException'也会冒泡给调用者。 – 2012-04-01 08:17:51
@JonSkeet感谢您的指点。我已经通过回答更新了。 – Adam 2012-04-01 08:28:18
公共静态无效的主要(字串[] args)抛出IOException异常{// TODO自动生成方法存根
File file = new File("names.txt");
ArrayList<String> names = new ArrayList<String>();
Scanner in = new Scanner(file);
while (in.hasNextLine()){
names.add(in.nextLine());
}
Collections.sort(names);
for(int i=0; i<names.size(); ++i){
System.out.println(names.get(i));
}
它看起来像一个普通的家庭作业 - 请加标签,如果它案子。 – 2012-04-01 07:55:39