对于我正在开发的课程,我必须创建一个将二进制数据写入文件(基于用户输入)的程序,然后将其读取到控制台。这是通过两个独立的程序完成的,一个处理数据和一个获取用户输入。每当我尝试列出文件的内容时,它都会一遍又一遍地打印最后一个项目。我的代码有什么问题?从二进制文件(Java)读取数据?
下面是该方案的相关部分是处理用户输入并打印到控制台:
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;
}
你可以张贴一些示例数据吗? @Becca – cunniemm
我期望第一个代码片段中的while循环是无限的,因为'read'永远不会被读取,所以它应该总是保留数据。 – clabe45
你不需要,也不应该使用'available()'。它不会做你认为它做的事。 – Kayaman