[英](Java)When store contents from text file into an array, output of printing array was all null
我是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));
您正在調用Readline並一次又一次地重寫對象lineInFile ...
這里:
String lineInFile = readFile.readLine();
int count = 0;
while(lineInFile != null)
{
count++;
lineInFile = readFile.readLine();
}
你應該把它放在里面
array[o] = lineInFile;
而不是o使用count變量
它不起作用,因為代碼的第一部分讀取文件中的所有行以初始化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
變量的聲明和初始化似乎沒用,可以刪除
編輯:作為@標記建議您需要在重置方法之前插入以下內容:readFile.mark(0); readFile.reset();
您可以使用lines()
方法從readFile
獲取所有行。
String[] array = readFile.lines().toArray()
因此,您無需自己數數和閱讀。
您也可以使用Files
-class
String[] array = (String[])Files.readAllLines(Paths.get("path to file")).toArray();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.