2 つの .data ファイルから Java プログラムにデータを読み込むシステムをセットアップする際に、いくつかの問題が発生しています...
IDE として Eclipse を使用しており、使用したい 2 つの .data ファイルがあるフォルダーにプロジェクトを作成しました。私はこのプロジェクトを始めたばかりなので、まだ始まったばかりです...
2 つの .data ファイルは car.data と owner.data で、プロジェクトを開始するために必要なものはこれだけです。
いくつかのクラスを作成しました: Owner.java、Car.java、および ReadFile.java (.data ファイルからデータを読み取るため)。
現在、Owner.java ファイルは次のようになっています。
import java.io.*;
public class Owner {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ReadFile rf = new ReadFile("Owner.data");
rf.read("Owner.data");
}
File f;
public String id;
public String lastName;
public String firstName;
public String street;
public String city;
public void readOwner() throws FileNotFoundException{
//File f = new File("Smart Stream Associate Software Engineer (Java) - Bristol/assessment/src/Owner.java");
//InputStream IS = new FileInputStream(f);
}
}
私の Car.java ファイルは次のようになります。
public class Order {
public String orderID;
public String orderNo;
public String personID;
}
私の ReadFile.java ファイルは次のようになります。
import java.io.*;
public class ReadFile {
String[] columns = new String[]{"personID", "lastName", "firstName", "street", "city"};
String[] data = new String[100];
public void read() throws IOException{
FileReader fr = new FileReader("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);
}
}
現在、Owner.java クラス (メイン メソッドがある場所) からプログラムを実行しようとすると、次のような例外が発生します。
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The constructor ReadFile(String) is undefined
The method read() in the type ReadFile is not applicable for the arguments (String)
それが不平を言っている行は次の行です:
ReadFile rf = new ReadFile("Owner.data");
なぜこの例外が発生するのか、それを回避するために何をするのを忘れたのか、誰かが指摘してもらえますか? よろしくお願いします。
編集 2013/09/25
そこで、以下の @sushain97 によって提案された変更を反映するようにコードを編集してみました。これで、次のような 'Owner.java クラスが作成されました。
import java.io.*;
public class Person {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ReadFile rf = new ReadFile("Owner.data");
rf.read();
}
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);
}
}
そして、次のような ReadFile.java クラス:
import java.io.*;
public class ReadFile {
//File file;
String[] columns = new String[]{"personID", "lastName", "firstName", "street", "city"};
String[] data = new String[100];
private File file;
public ReadFile(String fileName){
this.file = new File(fileName);
}
public void read() throws IOException{
FileReader fr = new FileReader(file);
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);
}
}
ただし、Owner.java クラスからコードを実行すると、次のようなエラーが表示されます。
Exception in thread "main" java.io.FileNotFoundException: Owner.data (The system cannot find the file specified)
と
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
at ReadFile.read(ReadFile.java:15)
at Person.main(Owner.java:8)
これは、「Owner.data」ファイルが見つからないことを意味すると思いますが、このファイルは「Owner.java」および「ReadFile.java」クラスが保存されているフォルダーと同じフォルダーに保存されています...理由は何かファイルが見つからないのですが、どうすれば確実に見つかりますか?
編集 25/09/2013 @ 09:45
私が理解しているように、PlanetSaroが提案した変更を回答に表示するようにコードを編集したので、次のようになりました。
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];
private static void readFile(String fileName){
try{
File file = new File("Person.data");
Scanner scanner = new Scanner(file);
while(scanner.hasNextLine()){
System.out.println(scanner.nextLine());
}
scanner.close();
} catch (FileNotFoundException e){
e.printStackTrace();
}
}
public void read(File file2) throws IOException{
FileReader fr = new FileReader("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);
}
}
しかし、私はまだエラーが発生していますException in thread "main" java.io.FileNotFoundException: Owner.data (The system cannot find the file specified)
私はこれがなぜなのか理解できませんか?
編集 2013/09/25 @ 10:35
わかりましたので、これまでに与えられた回答のいずれからもこれを機能させることができないようです(それは、回答を完全に理解していないためかもしれません-その趣旨でコメントしましたので、その場合は、もっと詳しく説明してください (基本的に、私は初心者です)。
ただし、プログラムを実行したときにコンソールに表示されるエラーの量を減らすことができました。私の2つのクラスは次のようになります。
ReadFile.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];
private static void readFile(file){
try{
File file = new File("D:\\Users\\Elgan Frost\\Desktop\\careers\\Smart Stream Associate Software Engineer (Java) - Bristol\\assessment\\srcPerson.data");
Scanner scanner = new Scanner(file1);
while(scanner.hasNextLine()){
System.out.println(scanner.nextLine());
}
scanner.close();
} catch (FileNotFoundException e){
e.printStackTrace();
}
}
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\\srcPerson.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);
}
}
Person.java:
import java.io.*;
public class Person {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ReadFile rf = new ReadFile();
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);
}
}
現在、次のようなコンソール エラーが 1 つだけ表示されています。
「スレッド "main" java.lang.Error での例外: 未解決のコンパイルの問題: トークン "file" の構文エラー、VariableDeclaratorId は、このトークン ファイルの後に期待される型に解決できません"
そして、次の行である ReadFile.java の 9 行目について不平を言っています。
private static void readFile(file){
Person.java の 7 行目は、次の行です。
ReadFile rf = new ReadFile();
これがなぜなのか、どうすれば正しくできるのか、誰にもアイデアがありますか?