使用Java长期安全地正确设置进度条的最大值

时间:2015-01-09 04:47:10

标签: java int progress-bar long-integer

所以这是背景故事。我有一些代码可以检索给定目录中所有文件的总字节数。完成后,它将该值返回为long。我现在的问题是我希望能够设置进度条的最大值。

最终我想开始将这些文件复制到不同的目录并相应地更新进度条。

public static long GetSize(String path) {
    File dir = new File(path);
    File[] fileArr = dir.listFiles();
    long totSize = 0;
    for (int c = 0; c < fileArr.length; c++) {
        totSize += fileArr[c].length();
    }
    return totSize;
}

然后

progressBar.setMaximum(FileSizeHandling.GetSize(location)); <-- This is invalid

将进度条设置为最长的最合适最安全的方法是什么?

我知道有很多方法可以安全地将long转换为int,但我主要担心的是,在某些情况下,long的值将超过整数最大可能值。

或者我应该完全废弃这种形式的思考并尝试不同的方法?

1 个答案:

答案 0 :(得分:3)

您可以将进度条的最大长度设置为100,然后按如下方式计算除数:

long divisor = totalSize / 100;

然后,每次要更新进度条时,只需:

int progressAmount = (int)(amountCopied / divisor);