在我的应用程序中,我有选择/拍摄照片、音频或视频文件的选项。我将每个文件路径写在自己的字符串中并执行一些操作。另外,我使用以下方法确定文件大小:
public double 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;
}
}
它工作得很好,但是在尝试获取拍摄照片的大小时,该方法总是返回0。
double s = 1.0 * getSize(taken_pic_path) / 1024 / 1024;
taken_pic_path 是 100% 正确的,有以下三个原因支持:1)我使用相同的路径创建预览时可以工作;2)我通过 Toast 显示该路径,看起来是正确的;3)我使用 file.exists() 检查了该路径,返回 true。我还尝试了以下操作:
File file = new File(taken_pic_path);
if (file.exists()){
double test = file.lenght();
}
我总是得到一个零作为文件大小...同样的技术在拍摄视频、拍摄音频、选择图片/视频/音频时都可以完美地工作,但是当我尝试获取拍摄照片的大小时,只能得到0。我就是想不通原因...有什么想法吗?
编辑 我进行了所有可能的检查:
if (file.exists()) {
String b = file.getPath();
boolean r = file.canRead();
boolean w = file.canWrite();
double d = file.length();
Toast.makeText(getApplicationContext(), b, Toast.LENGTH_LONG)
.show();
Toast.makeText(getApplicationContext(), Boolean.toString(r),
Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), Boolean.toString(w),
Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), Double.toString(d),
Toast.LENGTH_LONG).show();
}
输出:正确的文件路径 / 真 / 真 / 0.0
这是什么鬼......