我想知道File
类的对象是否将整个文件加载到主存储器上。我想到了使用2个文件(一个大一个小)来制作文件类的对象,然后比较这两个对象的大小。但是显然,Java
中没有简单的方法来确定对象的大小。
答案 0 :(得分:4)
File
对象只是引用文件路径的普通对象。所引用的文件在文件系统中可能存在也可能不存在。文件对象不保存文件内容。
当您结合使用InputStream
(例如FileInputStream
)或Reader
(例如FileReader
)和缓冲区(例如BufferedReader
)来读取文件时,您开始阅读实际的文件内容。现在,您是要将整个文件内容数据保留在内存中还是要逐块处理并将其丢弃。因此,是否将完整文件内容加载到内存中取决于您的应用程序。
为了预先知道文件大小(以字节为单位),您可以这样做:file.length()
为了了解读取后的文件内容大小,同时将文件存储内容读取到byte array
(byte[]
)中,并使用mybytes.length
测量数组的长度。
您在注释中提到要找出File
对象的大小。 File
对象只是另一个常用对象。不过,如果您要测量尺寸,请使用java.lang.instrument.Instrumentation#getObjectSize()
请参阅本文How to use the Java Instrumentation API,以了解如何使用java.lang.instrument
类确定对象大小。
答案 1 :(得分:-1)
如果要比较内存中文件内容的大小,则需要从文件对象中读取。如果将数据存储在字节数组中,则可以测量字节数组的长度。