2016-04-03 10 views
3

が考えるファイルから複数のオブジェクトを読み取りますAのそのファイルがJavaは、私は2つの異なるクラス</p> <pre><code>public class A { String name; int A1; int A2; } </code></pre> <p>を持っており、他のクラスがある

3 
"Jim"; 1;2 
"jef";3;5 
"Peter";6;7 
"aa";1;1 
"bb";2;3 
"cc";3;4 
ようなことができ

Bのいくつかのあなたが質問は、私が読んで、別の方法を、ある

(ファイルの先頭にある)がクラスAのオブジェクト数、残りはクラスBからのオブジェクトであるされていることを考えることができます

ファイルからすべてのオブジェクト?

主な問題は、ファイルから最初のintを読み込む方法がわかりません。私がやったことは

 InputStream inputFileStream = Main.class.getResourceAsStream("/inputFile.txt"); 
ObjectInputStream ois = new ObjectInputStream(inputStream);  
int i = ois.readInt(); 
    ois.close(); 

ですが、それは私にエラーを与える:

Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: 350A4261 
+0

あなたの質問は、1)ファイルから行を読む、2)ループを使って最初のx A型を読み込む、 whileループは残りの行を読み込みます。3)各行をAまたはB型に変換します。だから.... **正確に**あなたは立ち往生していますか?あなたが試したことを示してください。 –

+0

@HovercraftFullOfEels私は質問 –

答えて

0

The main problem is that i don't know how can i read the first int from the file.

あなたは、テキストファイルではなく、データファイルを読んでいるので、readInt()を使用しないでください。 BufferedReader、または私の推薦 - Scannerオブジェクトを使用してください。

InputStream inputFileStream = Main.class.getResourceAsStream("/inputFile.txt"); 
Scanner scanner = new Scanner(inputFileStream); 
int int = scanner.nextInt(); // get that first int 
scanner.nextLine(); // go to the next line (swallow the end-of-line token) 
//..... 

そして行を読み取るために同じスキャナを使用します。あなたの処理の可能性が高い;に分割し、必要な項目を持つ文字列の配列を作成するために、文字列のsplit(...)メソッドを使用します

while (scanner.hasNextLine) { 
    String line = scanner.nextLine(); 
    // here process the line into an A or B depending on the results of a counter variable 
    // then increment the counter here 
} 

注意を使用してください。 Integer.parseInt(...)

+0

を編集しましたが、私はオブジェクトに行くときに私は再び私のstreaminputを変更する必要があります。 ? –

+0

@KamyarParastesh:heck no。同じスキャナを使用してください。上記の編集を参照してください。あなたは何かを試して何が起こるか見たいと思うでしょう。 –

+0

@KamyarParastesh:それ以上の質問はありますか? –

関連する問題

 関連する問題