.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行が表示され、その行System.out.println(scanner.nextLine());
とSystem.out.println(data[i]);
ReadFileにある読み取り中の.dataファイルのファイルパスが示されます。 .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」などです。
ファイルの最後に到達するまでこれを実行してから、「columns」配列のいくつかの要素の内容を出力して、機能したことを示します。
私はこれについてどうやって行くのかわかりません、そして誰かが私を正しい方向に向けることができるかどうか疑問に思っていましたか?
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によるコメントで示唆されているように、最良の設計は、人物オブジェクトを持ち、ファイルからのデータを人物オブジェクトのリストとして保存することです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加