为了一个课程项目,我需要创建一个程序来根据用户输入将二进制数据写入文件并读取到控制台。这需要使用两个不同的程序进行处理数据和获取用户输入。每当我尝试列出文件的内容时,它总是打印最后一项。我的代码有什么问题?
以下是处理用户输入并在控制台上打印的相关部分代码:
这是处理数据并从二进制文件中读取数据的程序相关部分:
以下是处理用户输入并在控制台上打印的相关部分代码:
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" );
}
这是处理数据并从二进制文件中读取数据的程序相关部分:
以下是代码:
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;
}
read
从未被读取,因此它应该始终有剩余数据。 - clabe45available()
。它并不会做你想要的事情。 - Kayaman