私が取り組んでいるクラスでは、バイナリデータを(ユーザー入力に基づいて)ファイルに書き込み、それをコンソールに読み込むプログラムを作成する必要があります。これは、データを処理するプログラムとユーザー入力を取得するプログラムの2つの別々のプログラムで行われます。ファイルの内容をリストしようとすると、最後の項目が何度も何度も印刷されます。私のコードの問題は何ですか?バイナリファイル(Java)からデータを読み込む?
public String readSong(String fileName)
{
DataInputStream in = null;
String sTitle;
String sArtist;
String sGenre;
String song = null;
try
{
in = new DataInputStream(
new BufferedInputStream(
new FileInputStream(fileName)));
sTitle = in.readUTF();
sArtist = in.readUTF();
sGenre = in.readUTF();
song = sTitle + "\t" + sArtist + "\t" + sGenre;
in.close();
}
catch(Exception ex)
{
System.out.println("Error");
}
return song;
}
:
String song = null;
try
{
DataInputStream read = new DataInputStream(
new FileInputStream(fileName));
while(read.available() > 0)
{
song = process.readSong(fileName);
System.out.println(song);
}
}
catch(Exception e)
{
System.out.println("Error");
}
ここでデータを処理し、バイナリファイルから読み込むプログラムの関連部分があります:
はここで、コンソールにユーザーの入力やプリントを処理するプログラムの関連部分です
をローカル
DataInputStream in
を削除する必要がありますが、いくつかのサンプルデータをください投稿することができますか? @Becca – cunniemm'read'は決して読み込まれないので、最初のコードスニペットのwhileループは無限になると期待します。したがって、常にデータが残っているはずです。 – clabe45
あなたはする必要はありませんし、 'available()'を使うべきではありません。それはあなたが思っていることをしません。 – Kayaman