5

我有以下方法来确定文件大小:

    public static long getSize(String path) {

    File file = new File(path);

    if (file.exists()) {
        long size = file.length();

        return size;
    } else {
        Log.e("zero size", "the file size is zero!");
        return 0;

    }

现在我想用以下方法显示一个对话框(代码不完整):

 public void gimmeDialog(String path_to_file) {

    final Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.dialog);
    dialog.setTitle("Confirm");

    TextView text = (TextView) dialog.findViewById(R.id.txtUploadInfo);

    Button dialogButtonOK = (Button) dialog.findViewById(R.id.btnDialogOK);

    long uploadSize = Send.getSize(path_to_file) / 1024 / 1024;

    text.setText("You are about to upload "
            + Long.toString(uploadSize)
            + " MB. You must accept the terms of service before you can proceed");

    dialogButtonOK.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            dialog.dismiss();
        }
    });

    dialog.show();
}

问题是 uploadSize 始终为零,尽管方法 getSize() 在对话框函数外部调用时返回正确的文件大小。给定的字符串路径是正确的。可能是什么原因?

PS发送是我的班级名称

4

2 回答 2

5

您正在进行整数除法,如果分子小于分母,则结果为 0。

尝试双除法:

double uploadSize = 1.0 * Send.getSize(path_to_file) / 1024 / 1024;
于 2012-12-20T12:38:37.387 回答
1

调用 getSize() 并在对话框函数外部设置一个变量,该变量可在对话框函数内部访问。或者将其作为变量传递给函数。

这并不能真正解释问题,但确实解决了问题。

于 2012-12-20T12:33:47.903 回答