从二进制文件(Java)读取数据?

Reading data from binary file (Java)?

对于我正在处理的 class,我必须创建一个程序,将二进制数据写入文件(基于用户输入),然后将其读取到控制台。这是通过两个独立的程序完成的,一个处理数据,一个获取用户输入。每当我尝试列出文件的内容时,它都会一遍又一遍地打印最后一项。我的代码有什么问题?

这是处理用户输入并打印到控制台的程序的相关部分:

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;
}

在 readSong 方法中放入 while 循环,然后它才会逐行读取文件。 第一种方法不需要 while 循环,你只需要将文件名传递给 readsong 方法。

您的 DataInputStream 对象永远不会被修改,因为 DataInputStream in 是函数 readSong() 的局部对象。

您需要在函数 readSong().

中传递 DataInputStream 对象 read 的引用

所以调用应该是 song = process.readSong( fileName , read ); 并从你的函数 readSong()

中删除本地 DataInputStream in