我有以下方法来确定文件大小:
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()在对话框函数外部调用时返回正确的文件大小。给定的字符串路径是正确的。可能是什么原因?
P.S。发送是我的班级名称
答案 0 :(得分:5)
您正在进行整数除法,如果分子小于分母,则结果为0.
尝试双重划分:
double uploadSize = 1.0 * Send.getSize(path_to_file) / 1024 / 1024;
答案 1 :(得分:1)
调用getSize()并在对话框函数之外设置一个变量,该变量可在对话框函数中访问。或者将它作为变量传递给函数。
这并没有真正解释这个问题,但确实解决了这个问题。