Java JVM可以处理的最大文件大小是多少?

Java JVM可以处理的最大文件大小是多少?,java,file-io,Java,File Io,我想知道Java代码可以读取的最大文件大小是多少 我想处理100mb的文件大小。这可能吗 如果可能,我必须做的JVM初始设置是什么 请推荐一些处理文件的最佳实践。如使用ObjectInputStream、FilterInputStream等。。使用字节数组存储文件内容等理论上没有可以读取的最大文件大小,但我认为它是Integer.max\u值,因为不能初始化大于Integer.max\u值的charBuffer大小 char[] buffer = new char[/* int size */]

我想知道Java代码可以读取的最大文件大小是多少

我想处理100mb的文件大小。这可能吗

如果可能,我必须做的JVM初始设置是什么


请推荐一些处理文件的最佳实践。如使用ObjectInputStream、FilterInputStream等。。使用字节数组存储文件内容等

理论上没有可以读取的最大文件大小,但我认为它是
Integer.max\u值
,因为不能初始化大于
Integer.max\u值的charBuffer大小

char[] buffer = new char[/* int size */];
char[] buffer = new char[Integer.MAX_VALUE]; // maximum char buffer

BufferedReader b = new BufferedReader(new FileReader( new File("filename")));
b.read(buffer);

Java不支持特定的最大文件大小,这完全取决于您运行的操作系统。即使在32位操作系统上,100兆字节也不是什么大问题

您没有说是否要立即将整个文件读入内存。您可能会发现,一次只需处理一部分文件。例如,文本文件可能一次处理一行,因此无需加载整个文件。一次只读一行,然后处理每一行


如果要将整个文件读入一个内存块,则可能需要更改JVM的默认堆大小分配。许多JVM的默认值为128MB,这可能不足以加载整个文件,并且仍然有足够的空间来执行其他有用的操作。查看JVM的文档,了解如何增加堆大小分配。

我知道的唯一最大值是长度()的报告最大值,这是一个很长的值。这个长度是2^62-1,或者非常大

Java不会一次将整个文件保存在内存中。如果您想将文件的一部分保存在内存中,那么应该使用一个“Buffered”类(类的名称以Buffered开头)。这些类根据您设置的缓冲区大小为您缓冲文件的一部分

您应该使用的确切类取决于文件中的数据。如果您更具体一些,我们可能会帮助您确定要使用哪些类


(简而言之:说真的,100mb?这太小了。)

你能写的最大数字是多少?这是最大大小

如果分块读取,则文件的总大小是不相关的;世界上没有规则规定你必须一次性读取100兆字节的文件,你可以用10兆字节的块来代替。真正重要的是如何使用传入数据,以及是否需要完全存储原始数据的产品(例如,如果数据是建筑物的三维模型,您在内部需要如何表示它)或仅存储相关部分(例如,从大型文本文件中查找某个子句的前十个匹配项)


因为有很多可能的方法来处理数据,所以您的问题没有一个全面的答案。

只要您有超过100 MB的空闲空间,您应该能够立即将整个文件加载到内存中,尽管您可能不需要这样做

顺便说一句:就字母的意思而言

M = Mega or 1 million for disk or 1024^2 for memory.
B = Bytes (8-bits)
b = bit e.g. 100 Mb/s
m = milli e.g. mS - milli-seconds.

100毫位仅对压缩数据有意义,但我假设这不是您所说的。

可能是文件内容的副本,我想读取文件内容并在浏览器中显示它。100mb非常小,但我想在浏览器中显示它。即使是40 mb的浏览器也会挂起。。这就是为什么我有这种怀疑。你们真的很棒。。看到这么好的反应…-)long的最大_值为2^62-1作为其符号。;)我认为这是对所问问题的正确答案。@PeterLawrey,你是对的。我已经编辑了答案。必须读取文件并将其存储在临时变量中。处理后,必须使用浏览器将文件保存到用户桌面。当文件大小很大时,浏览器将挂起。我想避免这种情况发生。@Dinesh:从技术上讲,没有任何东西可以阻止您通过浏览器将文件从磁盘流到用户,浏览器毕竟支持HTTP流。