2010-11-22 112 views
0

請向我展示最佳/快速方法:Java加載二進制文件

1)將非常小的二進制文件加載到內存中。例如圖標;

2)加載/讀取大小爲512Mb +的非常大的二進制文件。也許我必須使用內存映射IO? 3)當你不想考慮大小/速度,但必須做的事情時,你的共同選擇:將所有字節讀入內存?

謝謝!!!

P.S.對不起,也許微不足道的問題。請不要關閉它;)

P.S.2。針對C#的模擬問題的Mirror;

回答

2

的將小文件讀入內存的最簡單方法是:

// Make a file object from the path name 
File file=new File("mypath"); 
// Find the size 
int size=file.length(); 
// Create a buffer big enough to hold the file 
byte[] contents=new byte[size]; 
// Create an input stream from the file object 
FileInputStream in=new FileInutStream(file); 
// Read it all 
in.read(contents); 
// Close the file 
in.close(); 

在現實生活中,在I/O錯誤的情況下需要一些try/catch塊。

如果你正在閱讀一個大文件,我強烈建議不要一次性將它全部讀入內存,如果它可以避免的話。閱讀並分塊處理。這是一個非常罕見的應用程序,真正需要一次在內存中保存500MB文件。

Java中沒有內存映射I/O這樣的事情。如果這就是你需要做的,你只需要創建一個非常大的字節數組。

+1

閱讀不保證一次全部閱讀。我會建議使用DataInputyStream.readFully(); – 2010-11-22 15:32:57