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

(Java)将文本文件中的内容存储到数组中时,打印数组的输出都为空,java,arrays,eclipse,null,filereader,Java,Arrays,Eclipse,Null,Filereader,我是Java新手,最近有一个任务涉及数组。这只是它的第一部分,我试图将文件中的内容存储到数组中,但结果是[null,null,null……]。我尝试过使用这些String[]array=list.toArray(新字符串[count]) List List=new ArrayList()但它不起作用,在stackoverflow中搜索,找到了类似于上面和下面的在数组中存储内容的方法的示例,但仍然希望您能告诉我实际发生了什么,这样我就可以调试它了。多谢各位 内容示例: 3 123 456 789

我是Java新手,最近有一个任务涉及数组。这只是它的第一部分,我试图将文件中的内容存储到数组中,但结果是[null,null,null……]。我尝试过使用这些
String[]array=list.toArray(新字符串[count])
List List=new ArrayList()
但它不起作用,在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));
导入java.io.FileReader;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入java.util.Scanner;
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileNotFoundException;
公共类数组{
公共静态void main(字符串[]args)引发异常{
//TODO自动生成的方法存根
FileReader theFile=新的FileReader(“文件路径”);
BufferedReader readFile=新的BufferedReader(文件);
字符串内容;
字符串lineInFile=readFile.readLine();
整数计数=0;
while(lineinfle!=null)
{
计数++;
lineInFile=readFile.readLine();
}
系统输出打印项次(计数);
字符串[]数组=新字符串[计数];
对于(int o=0;o
您正在调用Readline并一遍又一遍地重写对象lineInFile

在这里:

你应该把这个放进冰箱里

 array[o] = lineInFile;

不要使用o而是使用countvariable

它不起作用,因为代码的第一部分读取了文件中的所有行,以便初始化
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;
        }
for(int o=0;o
content
变量声明和初始化似乎没用,您可以删除

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

您可以使用
lines()
-方法从
readFile
获取所有行

String[] array = readFile.lines().toArray()
所以你不需要自己数数和阅读

您还可以使用
文件
-类

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

为了澄清这一点,while循环一直循环,直到readFile到达文件的末尾(readline()返回null)。然后在第二个循环中,由于readFile已经在文件的末尾,readline()返回将只返回null,因此数组中充满了null웃 Пepeúpaツ's的解决方案更好。我尝试运行此操作,但它给我以下错误java.lang.ArrayIndexOutOfBoundsException:0,在调试过程中多次出现。感谢您的快速响应!int count=0;String[]array=new String[count];while(lineinfle!=null){content=lineinflee+“”;array[count]=内容;计数+++;}@标记我认为您需要知道缓冲区大小才能初始化数组。这是第一个while循环的目的。我认为在使用
count
变量指定的大小初始化数组之前,您不能为数组分配任何缓冲行。否则,您将获得@chloe.t报告的
ArrayIndexOutOfBoundsException
。@chloe.t Paolo是正确的,因此如果必须使用数组(而不是列表,或者更好的是使用StringBuffer,因为您以字符串结尾),则需要调用readFile.close(),然后readFile=new BufferedReader(theFile);在开始时重新创建StringBuffer。@马克谢谢您的解释!现在对我有效!这将有效,但您需要在读取第一行之前调用readFile.mark(),否则您将获得readFile.reset()的详细信息
String[] array = (String[])Files.readAllLines(Paths.get("path to file")).toArray();