试图将文件读入数组java

时间:2014-04-13 11:40:27

标签: java

我正在尝试将文件读入和数组,但它似乎在这里工作不是我的代码

public static void main(String[] args) throws FileNotFoundException {
    Scanner input = new Scanner(new File("Sales.txt"));
    int lineCount = 0;
    String line = "";
    while (input.hasNextLine()) {
        line = input.nextLine();   // read one line 
        lineCount++; //count line to find out how big array must be
        // System.out.println(line);
    }

    String[] fileinput = new String[lineCount]; //create array to store file in


    while (input.hasNextLine()) {
        int i = 0;
        fileinput[i] = input.nextLine();
        System.out.println(fileinput[i]);
        i++;

    }

我正在使用第一部分找出有多少行,所以我可以指定我的数组为那个大小,然后尝试将每一行放入我的第二部分的数组中。

但是每当它第一次使用该文件后第二次看起来似乎不想阅读或使用该文件时,它一直会返回null。

非常感谢任何帮助。

由于

5 个答案:

答案 0 :(得分:3)

您需要在while循环之外移动i的声明,然后重新启动以从头开始读取文件。

input = new Scanner(new File("Sales.txt"));
int i = 0,
while (input.hasNextLine()) 
        fileinput[i] = input.nextLine();
        System.out.println(fileinput[i]);
        i++;
}

您还可以使用List来避免在文件中迭代两次并使用readAllLines(如果您使用的是Java 7)。

File f = new File("Sales.txt");
Charset ch = //encoding of the file
List<String> allLines = Files.readAllLines(f.toPath(), ch);

答案 1 :(得分:3)

您必须从头开始为第二个循环启动扫描仪:

String[] fileinput = new String[lineCount];

之后添加以下内容
input = new Scanner(new File("Sales.txt"));

你必须在第二个循环之外声明i

答案 2 :(得分:3)

您需要在int i之前初始化while,因为每次进入循环时它都将初始化为0,因此不会使用增量i。

while (input.hasNextLine()) {
    int i = 0;
    fileinput[i] = input.nextLine();
    System.out.println(fileinput[i]);
    i++;

}

使用

修改代码
int i = 0;
while (input.hasNextLine()) {
        fileinput[i] = input.nextLine();
        System.out.println(fileinput[i]);
        i++;
}

答案 3 :(得分:2)

你走了:

String[] fileinput = (new Scanner( new File("Sales.txt") ).useDelimiter("\\A").next()).split("[\\r\\n]+");

这是将文件中的行保存为String数组的单行程序。

请记住,您不需要计算行数和所有其他变量减速度。即,您的整个代码只能被这一行代替。

这是你需要的吗?

答案 4 :(得分:1)

简单的方法是将行读取到List,然后将其转换为Array,如此处所示 Java: Reading a file into an array