2

.data ファイルを読み取るために使用している次の Java クラスがあります。

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 ....」という2行が表示され、読み取られている.dataファイルのファイルパスが表示されます。これは、行System.out.println(scanner.nextLine());System.out.println(data[i]);ReadFileから取得されます.java クラス、および「データ長: 1」という行System.out.println("Data length: " + data.length);は、クラスの最後の行に由来します。

これは、プログラムが .data ファイルの最初の 2 行を読み取ったが、最初の行のみを保存したことを意味すると思います。

私がしたいのは、最初の行を読み取り、それを文字列に格納してから、「スペース」が表示される場所で文字列を個別の文字列に分割し、それらの文字列のそれぞれを文字列の配列の要素に格納することですクラスの開始時に次の行を使用して作成しました。

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

個別の文字列はその順序でそれぞれに格納する必要があります。したがって、最初の文字列 (元の文字列の最初のスペースの前) は「personID」に格納され、2 番目の文字列 (最初のスペースの後、2 番目の前) が格納されます。 「lastName」など

次にやりたいことは、ファイルの次の各行を順番に読み取り、各行の要素を「列」文字列配列の次の「行」に格納することです (基本的に、配列を使用してデータのテーブルを作成します)各配列の最初の要素は「personID」、2 番目の要素は「lastName」などです。

ファイルの最後に到達するまでこれを行い、「列」配列のいくつかの要素の内容を出力して、それが機能したことを示したいと思います。

どうすればいいのかわからないので、誰かが私を正しい方向に向けることができるかどうか疑問に思っていましたか?

4

1 に答える 1