用Java获取文件的实际大小?

时间:2011-08-11 07:32:19

标签: java file

我遇到了问题。

  1. 我开始从torrent下载文件。总的大小 文件是699 MB。
  2. 但是一分钟后我停止了我的torrent客户端,torrent客户端显示7 已下载MB数据,我在队列中只有1个文件。
  3. 使用Java IO功能我计算了文件的长度,它显示了699 MB的大小
  4. 档案文件=新档案(“D:/Easy.A.2010.BDRip.XviD-iMBT/easy.a.2010.bdrip.xvid-imbt.avi”);

    System.out.println("File Size="+file.length());
    

    //转换为MB后,我得到的是699 MB

    在后期我将文件分成不同大小的部分并上传到服务器。因为文件大小不是文件的实际大小所以我得到了例外

    java.lang.NegativeArraySizeException
    

    请告诉我如何获取文件的实际大小,或获取有关该文件是否完整的文件的信息。

    谢谢

3 个答案:

答案 0 :(得分:2)

我不确定这是否相关,但我使用过的所有torrent客户端都会在下载开始时创建最终大小的文件。

即对于699 MB的电影,在开始时创建一个空白的699 MB文件,而下载的7 MB仅表示已填写这些空白的7 MB,但磁盘上的文件大小仍为699 MB整个下载过程。

答案 1 :(得分:1)

Angit是对的,torrent客户端包装大小= torrent_file的空白文件,如果你下载7MB然后用它填充空白文件,如果你想先计算,看看torrent客户端创建的文件是否填充空白然后你可以计算你有多少空白或非空白,之后很容易:)。

答案 2 :(得分:1)

下定决心。您对文件大小或NegativeArraySizeException有疑问吗? File.length()为您提供上次更新目录时文件的长度。如果文件仍处于打开状态且仍在扩展,则此信息可能不是最新信息。