2010-11-22 109 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