在我的应用程序中,我可以选择拍摄/选择照片、音频或视频文件。我将每个文件路径写在它自己的字符串中并用它执行一些操作。另外,我用它来确定文件大小,方法如下:
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;
由于 3 个原因,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();
}
输出:正确的文件路径/true/true/0.0
什么鬼……