gpt4 book ai didi

java - 从 .data 文件读取到 Java - 如何将信息存储在数组数组中?

转载 作者:行者123 更新时间:2023-11-30 11:28:09 25 4
gpt4 key购买 nike

我有以下 Java 类,我用它来读取 .data 文件:

import java.io.*;
import java.util.Scanner;

public class ReadFile {
static File file;
String[] columns = new String[]{"personID", "lastName", "firstName", "street", "city"};
String[] data = new String[100];
String filename = "D:\\Users\\Elgan Frost\\Desktop\\careers\\Smart Stream Associate Software Engineer (Java) - Bristol\\assessment\\srcPerson.data";

public ReadFile(File f) throws FileNotFoundException {
// TODO Auto-generated constructor stub
try{
//File = new File("D:\\Users\\Elgan Frost\\Desktop\\careers\\Smart Stream Associate Software Engineer (Java) - Bristol\\assessment\\srcPerson.data");
f = new File("D:\\Users\\Elgan Frost\\Desktop\\careers\\Smart Stream Associate Software Engineer (Java) - Bristol\\assessment\\src\\Person.data");
Scanner scanner = new Scanner(f);
while(scanner.hasNextLine()){
System.out.println(scanner.nextLine());
}
scanner.close();
}
finally{

}
}

public void read(File file2) throws IOException{
FileReader fr = new FileReader("D:\\Users\\Elgan Frost\\Desktop\\careers\\Smart Stream Associate Software Engineer (Java) - Bristol\\assessment\\src\\Person.data");
BufferedReader br = new BufferedReader(fr);
String line;

int i = 0;
while((line = br.readLine())!= null){
data[i] = line;
System.out.println(data[i]);
i++;
}
br.close();

String[] dataNew = new String[i];
System.arraycopy(data, 0, dataNew, 0, i);
data = dataNew;
System.out.println("Data length: " + data.length);
}
}

为了让您更全面地了解我的代码,我还有以下 Java 类,其中包含我的主要方法:

import java.io.*;

public class Person {

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ReadFile rf = new ReadFile(f);
rf.read(ReadFile.file);

}
static File f;
public String id;
public String lastName;
public String firstName;
public String street;
public String city;

public void readPerson() throws FileNotFoundException{
//File f = new File("Smart Stream Associate Software Engineer (Java) - Bristol/assessment/src/Person.java");
//InputStream IS = new FileInputStream(f);
}

}

目前,当我运行我的程序时,控制台显示两行“Person.data....”并给出正在读取的 .data 文件的文件路径,这将来自 System.out.println(scanner.nextLine());System.out.println(data[i]); 在我的 ReadFile.java 类中,以及行“Data length: 1”,它来自类(class)末尾的 System.out.println("Data length: "+ data.length); 行。

我假设这意味着程序已经读取了 .data 文件的前两行,但只存储了第一行。

我想要发生的事情是让它读取第一行,将其存储在一个字符串中,然后在出现“空格”的任何地方将字符串分成单独的字符串,并将这些字符串中的每一个存储在我在类(class)开始时创建的字符串数组 - 使用以下行:

String[] columns = new String[]{"personID", "lastName", "firstName", "street", "city"};

单独的字符串应按此顺序存储到每个字符串中 - 因此第一个字符串(在原始字符串中的第一个空格之前)将存储在“personID”中,第二个(在第一个空格之后,第二个之前)将存储在“lastName”等中。

然后我想做的是依次读取文件中的每一行,将每一行的元素存储到我的“列”字符串数组的下一个“行”中(基本上创建一个数据表,使用数组数组),其中每个数组的第一个元素是“personID”,第二个元素是“lastName”等。

我想这样做直到到达文件末尾,然后打印“列”数组的几个元素的内容,只是为了表明它已经工作。

我不确定该怎么做,只是想知道是否有人可以指出正确的方向?

最佳答案

final Scanner in = new Scanner(new FileReader("filename.txt"));
final List<Person> persons= new ArrayList<Person>();
while (in.hasNext()) {
final String[] columns = in.next().split(" ");
final Person person = new Person();
Person.setId(column[0]);
Person.setName(column[1]);
// like this you can set all the fields
persons.add(person);
}

然后您可以循环遍历列列表中的几条记录并显示相同的内容

正如 OOPS 在评论中所建议的那样,最好的设计是拥有一个 person 对象并将文件中的数据存储为 Person 对象列表

关于java - 从 .data 文件读取到 Java - 如何将信息存储在数组数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19004104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com