我是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));
答案 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();