如何在创建文件之前用Java评估文件的大小



在我的Java程序中,我需要创建文件并在其中写入一些可以通过Inputstream的read()方法获得的内容。在创建文件之前,如何评估文件的大小?

通常,您不需要来知道文件的大小,但如果您真的知道:

唯一可以做到这一点的方法是首先将InputStream中的内容完全读取到内存中,然后查看您有多少内容。

关于如何将其全部读取到内存中,您有几个选项,其中之一可能是将其写入ByteArrayOutputStream。(当然,当你准备好的时候,把它写在文件中。)

但是,流的伟大之处在于,你不需要将所有内容读入内存;如果你能避免事先知道尺寸,那将是最好的。

还要注意,文件在磁盘上占用的空间与文件大小并不完全相同;大多数文件系统以块(4k、8k、16k、32k)工作,因此在使用8k块的文件系统上,12k的文件实际上会占用16k的空间。

这取决于使用的编码,但您可以将其写入内存流并获取长度。

最新更新