2012-04-01 40 views

回答

3

简单的方法是使用Guava

File file = new File("foo.txt"); 
List<String> words = Files.readLines(file, Charsets.UTF_8); 

(它不能保证是一个ArrayList,但我希望也没有什么关系)

+0

链接到番石榴坏了! – Narayan 2012-04-01 16:11:05

+0

@Narayan:谢谢,谢谢。 – 2012-04-01 16:46:15

0

你读逐行为文件创建一个ArrayList,并且如果line.length> 0,则将line.substring(1)添加到已定义的ArrayList。

+0

我使用了line.substring(1),因为他的示例包含了他在每行开头都有一个'>'。 – dexametason 2012-04-01 07:57:57

0

我把文件放在“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); 
     } 
    } 

} 
+0

正如亚当的答案中提到的,我建议使用InputStreamReader并指定编码。此外,你应该有一个try/finally块,这样你就可以关闭文件。 (在一个小样本中不是问题,但我不希望OP将这些代码直接提取到实用程序方法中。) – 2012-04-01 08:19:00

+0

是的,它可以使用一些抛光,但它确实会提出问题。 – Tom 2012-04-01 12:50:43

0

我敢肯定,他们是很多,与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(); 
    } 
} 
+1

请注意,这将使用默认的字符编码,这通常不是一个好主意。我建议使用包装在FileInputStream周围的InputStreamReader。此外,'close'调用应该在'finally'块中。我建议让'IOException'也会冒泡给调用者。 – 2012-04-01 08:17:51

+0

@JonSkeet感谢您的指点。我已经通过回答更新了。 – Adam 2012-04-01 08:28:18

3

公共静态无效的主要(字串[] 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)); 
    }