簡體   English   中英

從二進制文件(Java)讀取數據?

[英]Reading data from binary file (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;
}

您的DataInputStream對象永遠不會被修改,因為DataInputStream in是函數readSong()本地對象。

您需要傳遞函數readSong() 讀取DataInputStream對象的引用。

所以調用應該是song = process.readSong( fileName , read ); 並從函數readSong()刪除本地DataInputStream in

在readSong方法中放入while循環然后它只會逐行讀取文件。 在第一種方法中不需要while循環,你只需要將filename傳遞給readsong方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM