【发布时间】:2018-01-16 08:14:42
【问题描述】:
对于我正在处理的课程,我必须创建一个程序,将二进制数据写入文件(基于用户输入),然后将其读取到控制台。这是通过两个独立的程序完成的,一个处理数据,一个获取用户输入。每当我尝试列出文件的内容时,它都会一遍又一遍地打印最后一项。我的代码有什么问题?
这是处理用户输入并打印到控制台的程序的相关部分:
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;
}
【问题讨论】:
-
你能发布一些示例数据吗? @贝卡
-
我希望第一个代码 sn-p 中的 while 循环是无限的,因为永远不会读取
read,所以它应该总是有数据剩余。 -
您不需要也不应该使用
available()。它没有做你认为它做的事情。
标签: java file-io io binary datainputstream