請向我展示最佳/快速方法:Java加載二進制文件
1)將非常小的二進制文件加載到內存中。例如圖標;
2)加載/讀取大小爲512Mb +的非常大的二進制文件。也許我必須使用內存映射IO? 3)當你不想考慮大小/速度,但必須做的事情時,你的共同選擇:將所有字節讀入內存?
謝謝!!!
P.S.對不起,也許微不足道的問題。請不要關閉它;)
P.S.2。針對C#的模擬問題的Mirror;
請向我展示最佳/快速方法:Java加載二進制文件
1)將非常小的二進制文件加載到內存中。例如圖標;
2)加載/讀取大小爲512Mb +的非常大的二進制文件。也許我必須使用內存映射IO? 3)當你不想考慮大小/速度,但必須做的事情時,你的共同選擇:將所有字節讀入內存?
謝謝!!!
P.S.對不起,也許微不足道的問題。請不要關閉它;)
P.S.2。針對C#的模擬問題的Mirror;
的將小文件讀入內存的最簡單方法是:
// 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這樣的事情。如果這就是你需要做的,你只需要創建一個非常大的字節數組。
閱讀不保證一次全部閱讀。我會建議使用DataInputyStream.readFully(); – 2010-11-22 15:32:57