2016-04-15 14 views
1

私は、バイナリデータファイルを読み込んで、強度と知恵のような統計を文字のために作成する必要がある学校のプロジェクトを行っています。最初の8ビットが1つのstatを構成するように設定されています。Javaでバイナリデータファイルを読むにはどうすればいいですか

これを行うための実際の構文が何か不思議でした。このようなテキストファイルを読むのと同じですか?代わりに、あなたはこのようなものを使用するスキャナの

File file = new File("CharacterStats.dat"); 
Scanner inputScanner = new Scanner(file); 

inputScanner.next(); 

答えて

3

File file = new File("CharacterStats.dat"); 
FileInputStream fis = new FileInputStream(file); 
ObjectInputStream ois = new ObjectInputStream(fis); 
YourClass object = (YourClass) ois.readObject(); 

どこストリームから新しいオブジェクトを作成し、あなたがしたいオブジェクトにキャストされている第三のライン。 javaはどのオブジェクトが読み込まれているかを知ることができないため、これを行う必要があります。

EDIT:これは、シリアライズされたオブジェクトとしてバイナリデータを読み込むためのものです。私はあなたの "統計"がオブジェクトであるというあなたの質問を誤解しているかもしれません。

+0

感謝。しかし今、どのように私はそれらを使用するためにすべての1とゼロにアクセスします。申し訳ありませんが、私は実際にはテキストファイルの読み込み経験があります。 – Ionterac

+0

あなたはしません。これがObjectInputStreamの "readObject()"メソッドによって実現されます。バイナリはテキストファイルからjavaオブジェクトとして解釈されます。しかし、次に、あなたが実際にどのような種類の** Object **をどのようにキャストするかをコンパイラに伝える必要があります。 –

+0

私はそれをintとしてキャストすると自動的に010010を18に変換しますか?たくさんのご質問にお手数をおかけして申し訳ありません。 – Ionterac

3

あなたが7+ JDKを使用している場合は、最も簡単な方法は次のようになります。

Path path = Paths.get("CharacterStats.dat"); 
byte[] fileContents = Files.readAllBytes(path); 

をそしてあなたが望むものは何でもその配列を行います。

バイトには8ビットが含まれているため、最初の8ビットにはfileContents[0]でアクセスし、おそらくbitwise operationsを使用してプログラムのフローを制御できます。ファイルを取得し、BufferedReaderのにファイルリーダーのオブジェクトを渡すとnullが見つからないまで、ファイルを印刷するために使用さ

1
String fileChar; 
FileReader fileReader = new FileReader("read_data_file.dat"); 
BufferedReader bufferReader = new BufferedReader(fileReader); 

while((fileChar = bufferReader.readLine()) != null){ 
    System.out.print(fileChar); 
} 

bufferReader.close(); 

FileReaderの(EOF - ファイルの出会いの終わり)

+0

これはテキストIOを実行しています。問題は、バイナリデータを読むことです。 – Functino

関連する問題