(Java)当将文本文件中的内容存储到数组中时,打印数组的输出全为空

时间:2017-03-10 15:19:08

标签: java arrays eclipse null filereader

我是Java的新手,最近有一个涉及数组的赋值。它只是它的第一部分,我试图将文件中的内容存储到数组中,但结果是[null,null,null ......]。我曾尝试过使用这些String[] array = list.toArray(new String[count]);
List<String> list = new ArrayList<String>();但是它不起作用,搜索stackoverflow并找到类似的例子,如下面的方法在数组中存储内容,但是,希望你能给我一些关于真实情况的信息,所以我可以调试一下。谢谢。

内容示例:

3
123
456 
789

我需要将其保存为字符串,因为它在作业中是一个非常长的数字

import java.io.FileReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;

public class Array {

      public static void main(String[] args) throws Exception{ 
            // TODO Auto-generated method stub
            FileReader theFile = new FileReader("path of the file");
            BufferedReader readFile = new BufferedReader(theFile);

            String content;
            String lineInFile = readFile.readLine();
            int count = 0; 
            while(lineInFile != null)
            {
                count++;
                lineInFile = readFile.readLine();
            }

            System.out.println(count);
            String[] array = new String[count];
            for(int o = 0; o < count; o++)
            {
                content = lineInFile + "";
                lineInFile = readFile.readLine();
                array[o] = lineInFile;
            }

            System.out.println(Arrays.toString(array));

3 个答案:

答案 0 :(得分:0)

您正在调用 Readline 并反复重写对象lineInFile ...

下面:

String lineInFile = readFile.readLine();
int count = 0; 
while(lineInFile != null)
{
    count++;
    lineInFile = readFile.readLine();
}

你应该把它放在里面

 array[o] = lineInFile;

而不是 o 使用计数变量

答案 1 :(得分:0)

它不起作用,因为代码的第一部分读取文件中的所有行以初始化count变量:

String lineInFile = readFile.readLine();
int count = 0; 
while(lineInFile != null)
{
    count++;
    lineInFile = readFile.readLine();
}

...并为数组提供大小

String[] array = new String[count];  

现在需要在将文件内容加载到数组之前重置文件缓冲区,因此需要插入以下行:

readFile.reset();

之前:

for(int o = 0; o < count; o++)
        {
            content = lineInFile + "";
            lineInFile = readFile.readLine();
            array[o] = lineInFile;
        }

content变量声明和初始化似乎没用,你可以删除

编辑:由于@marks建议您需要在重置方法之前插入以下内容:     readFile.mark(0);     readFile.reset();

答案 2 :(得分:0)

您可以使用readFile - 方法

lines()获取所有行
String[] array = readFile.lines().toArray()

所以你不需要自己计算和阅读。

您还可以使用Files - 类

String[] array = (String[])Files.readAllLines(Paths.get("path to file")).toArray();