在创建Java文件之前,如何评估文件的大小?
在我的Java程序中,我需要创建文件并在其中写入我可以通过Inputstream的read()方法获得的内容。在创建文件之前,如何评估文件的大小?通常,您不需要知道文件的大小,但如果确实需要,请执行以下操作: 唯一能做到这一点的方法是首先将在创建Java文件之前,如何评估文件的大小?,java,file,size,inputstream,Java,File,Size,Inputstream,在我的Java程序中,我需要创建文件并在其中写入我可以通过Inputstream的read()方法获得的内容。在创建文件之前,如何评估文件的大小?通常,您不需要知道文件的大小,但如果确实需要,请执行以下操作: 唯一能做到这一点的方法是首先将InputStream中的内容完全读取到内存中,然后查看您有多少 对于如何将其全部读入内存,您有几个选项,其中之一可能是将其写入到内存中。(当然,准备好后,将其写入文件。) 但同样,流的伟大之处在于,你不必把所有的东西都读入记忆;如果你可以避免事先知道尺寸,那
InputStream
中的内容完全读取到内存中,然后查看您有多少
对于如何将其全部读入内存,您有几个选项,其中之一可能是将其写入到内存中。(当然,准备好后,将其写入文件。)
但同样,流的伟大之处在于,你不必把所有的东西都读入记忆;如果你可以避免事先知道尺寸,那就最好了
还要注意,文件在磁盘上占用的空间与文件大小不完全相同;大多数文件系统都是分块工作的(4k、8k、16k、32k),因此在使用8k分块的文件系统上(比如)12k的文件实际上会占用16k的空间。这取决于所使用的编码,但您可以将其写入memorystream并获得长度。为什么不使用OutputStream的
write()
编写它?为什么需要知道文件的大小?通常不能。假设inputstream连接到网络套接字,或/dev/uradom
——它们是“无限的”。请澄清您的用例和实际问题,您的问题无法回答。您可以通过检查要写入文件的字符数(长度)来评估大小。如果可以,会有什么区别?不能在Java中预扩展文件。你的问题还不清楚。什么编码?什么记忆流?