2014-11-25 26 views
1

我正在尝试从java中的文件中练习阅读文本。我很困扰我如何读取N行数量,比如文件中的前10行,然后在ArrayList中添加行数。如何从文件中读取N行数量?

说例如,该文件包含1-100个数字,如此;

- 1 
- 2 
- 3 
- 4 
- 5 
- 6 
- 7 
- 8 
- 9 
- 10 
- .... 

我想读取前5个数字,所以1,2,3,4,5并将其添加到数组列表中。到目前为止,这是我所能做到的,但我被卡住了,不知道现在该做什么。

ArrayList<Double> array = new ArrayList<Double>(); 
InputStream list = new BufferedInputStream(new FileInputStream("numbers.txt")); 

for (double i = 0; i <= 5; ++i) { 
    // I know I need to add something here so the for loop read through 
    // the file but I have no idea how I can do this 
    array.add(i); // This is saying read 1 line and add it to arraylist, 
    // then read read second and so on 

} 
+0

http://docs.oracle.com/javase/tutorial/essential/io/charstreams.html。 Google在搜索“如何从Java文件读取文件”时返回的10个第一个结果回答了您的问题。 – 2014-11-25 15:06:06

+0

谷歌可能会非常有用,不时;) – Maksym 2014-11-25 15:06:13

回答

3

你可以尝试使用扫描仪和计数器:

 ArrayList<Double> array = new ArrayList<Double>(); 
    Scanner input = new Scanner(new File("numbers.txt")); 
    int counter = 0; 
    while(input.hasNextLine() && counter < 10) 
    { 
     array.add(Double.parseDouble(input.nextLine())); 
     counter++; 
    } 

应通过10条线路,只要有文件中更多的投入增加每到ArrayList循环。

2
ArrayList<String> array = new ArrayList<String>(); 
//ArrayList of String (because you will read strings) 
BufferedReader reader = null; 
try { 
    reader = new BufferedReader(new FileReader("numbers.txt")); //to read the file 
} catch (FileNotFoundException ex) { //file numbers.txt does not exists 
    System.err.println(ex.toString()); 
    //here you should stop your program, or find another way to open some file 
} 
String line; //to store a read line 
int N = 5; //max number of lines to read 
int counter = 0; //current number of lines already read 
try { 
    //read line by line with the readLine() method 
    while ((line = reader.readLine()) != null && counter < N) { 
    //check also the counter if it is smaller then desired amount of lines to read 
     array.add(line); //add the line to the ArrayList of strings 
     counter++; //update the counter of the read lines (increment by one) 
    } 
    //the while loop will exit if: 
    // there is no more line to read (i.e. line==null, i.e. N>#lines in the file) 
    // OR the desired amount of line was correctly read 
    reader.close(); //close the reader and related streams 
} catch (IOException ex) { //if there is some input/output problem 
    System.err.println(ex.toString()); 
} 
+0

为什么要使用ArrayList '? – 2014-11-25 15:12:32

+0

@LuiggiMendoza因为他的问题是读取文本文件的N行,独立于文件本身的内容。我认为他说明数字的事实只是给我们一个例子 – WoDoSc 2014-11-25 15:15:53

+0

我不这么认为。 OP的意图非常明确。 OP不能实现的唯一部分就是读取文件的内容。其余的代码只是等待那个缺失的部分来解决这个难题。 – 2014-11-25 15:17:56

1
List<Integer> array = new ArrayList<>(); 
try (BufferedReader in = new BufferedReader(
     new InputStreamReader(new FileInputStream("numbers.txt")))) { 
    for (int i = 0; i < 5; ++i) { // Loops 5 times 
     String line = in.readLine(); 
     if (line == null) [ // End of file? 
      break; 
     } 
     // line does not contain line-ending. 
     int num = Integer.parseInt(line); 
     array.add(i); 
    } 
} // Closes in. 
System.out.println(array); 
0
ArrayList<Double> myList = new ArrayList<Double>(); 
int numberOfLinesToRead = 5; 
File f = new File("number.txt"); 
Scanner fileScanner = new Scanner(f); 
for(int i=0; i<numberOfLinesToRead; i++){ 
    myList.add(fileScanner.nextDouble()); 
} 

确保你在你的文件 “numberOfLinesToRead” 线。