0

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

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

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

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

谢谢!!!

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

PS2。C#模拟问题的镜子

4

2 回答 2

5

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

查看小文件的字节流类:字节流

查看缓冲 I/O 以获得更大的文件:缓冲流

于 2010-11-22T14:38:12.057 回答
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();

在现实生活中,您需要一些 try/catch 块以防 I/O 错误。

如果您正在阅读一个大文件,我强烈建议您不要一次将其全部读入内存,如果可以避免的话。阅读并分块处理。这是一个非常罕见的应用程序,它确实需要一次在内存中保存一个 500MB 的文件。

Java 中没有内存映射 I/O 之类的东西。如果这是你需要做的,你只需要创建一个非常大的字节数组。

于 2010-11-22T14:41:41.953 回答