在我的Java程序中,我需要创建文件并在其中写入我可以通过Inputstream read()方法获得的内容。如何在创建文件之前评估文件大小?
答案 0 :(得分:1)
通常情况下,你不需要知道文件的大小,但如果你真的这么做:
你能做到的唯一方法就是首先将InputStream
中的内容完全读入内存,然后看看你有多少。
如何将其全部读入内存有几种选择,其中一种可能是将其写入ByteArrayOutputStream
。 (然后,当然,当你准备好时,把它写到文件中。)
但同样,关于流的好处在于你不会 将所有东西都读入内存;如果您可以提前避免需要知道尺寸,那将是最好的。
另请注意,文件在磁盘上占用的空间与文件大小不完全相同;大多数文件系统都以块(4k,8k,16k,32k)工作,因此在使用8k块的文件系统上(例如)12k的文件实际上将占用16k的空间。
答案 1 :(得分:-2)
它取决于所使用的编码,但您可以将其写入内存流并获取长度。