将.text文件数据放入数组中

时间:2013-12-28 11:11:15

标签: java java.util.scanner

我是java的新手我想知道如何读取.txt文件然后将每一行放在一个数组单元格中。 .txt文件的格式必须如下所示:

car //goes in array[0]
boat //goes in array[1]
ship //goes in array[2]
airplane //goes in array[3]
//...and so on..

我已经尝试创建以这种方式实现的ReadFile类:

import java.io.*;
import java.util.*;
public class ReadFile {
    private Scanner x;

public void open(){
    try{
        x = new Scanner(new File("time_table_data.txt"));
    }catch(Exception e){
        System.out.println("Could Not Create The File");
    }
}

public String read(){
    String s = "";
    while(x.hasNext()){
        String a = x.next();
        s = a.format("%s\n",a);
    }
    return s;
}


public void close(){
    x.close();
}


}

4 个答案:

答案 0 :(得分:2)

问题是你不知道有多少单词会出现。要解决这个问题,您可以使用ArrayList。

List<String> entries = new ArrayList<String>();
while (scanner.hasNext())
{
    entries.add(scanner.nextLine());
}
System.out.println(entries);

使用get(int index)方法访问它们:

String test = entries.get(0); // This will be "car"

答案 1 :(得分:2)

如果你愿意使用Apache Commons IO那么你可以很容易地做到这一点:

import org.apache.commons.io.FileUtils;

String[] linesArr = new String[0];
List<String> lines = FileUtils.readLines(new File("FILE_NAME.txt"));
if (lines != null) {
     linesArr = lines.toArray(linesArr);
}

答案 2 :(得分:1)

只是做:

List<String> lines = new ArrayList<String>();

try (BufferedReader br = new BufferedReader(new FileReader(file))) {
    String line;
    while ((line = br.readLine()) != null) {
       lines.add(line); // Add line to list
    }
} // Try-with-resources closes reader

当您只是寻找整条线路时,您不需要扫描仪或任何其他想象的东西。

如果你真的需要一个数组而不是最后一个列表,你可以从最终的List中读出数组。

答案 3 :(得分:0)

创建一个方法,从文件中读取所有数据并按如下方式存储在List中。

public ArrayList<String> fileRead(String fileName){
        File           f;
        String         s;
        FileReader     fr = null;
        BufferedReader br = null;
        ArrayList<String>   sl = new ArrayList<String>();
        try {
            f  = new File(fileName); 
            fr = new FileReader(f);
            br = new BufferedReader(fr);
            while((s=br.readLine())!=null){
                sl.add(s);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
                try {
                    if(br!=null)
                        br.close();
                    if(fr!=null)
                        fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
        return sl;
}