Java加载二进制文件

时间:2010-11-22 14:23:58

标签: java binaryfiles java-io

请告诉我最好/最快的方法:

1)将非常小的二进制文件加载到内存中。例如图标;

2)加载/读取大小为512Mb +的非常大的二进制文件。也许我必须使用内存映射IO?

3)当你不想考虑大小/速度但是必须做的事情时你的共同选择:将所有字节读入内存?

谢谢!!!

P.S。对不起,也许是微不足道的问题。请不要关闭它;)

P.S.2。 {C}的模拟问题Mirror;

2 个答案:

答案 0 :(得分:5)

对于内存映射文件,java有一个nio包:Memory Mapped Files

检查小文件的字节流类:Byte Stream

查看更大文件的缓冲I / O:Buffered Stream

答案 1 :(得分: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这样的东西。如果这是你需要做的,你只需要创建一个非常大的字节数组。