[英]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.