在安卓 sdk 中获取文件大小?
我在获取文件大小时遇到问题。我有以下代码:
File file = new File("/sdcard/lala.txt");
long length = file.length();
长度始终为零,是的,为零。
我正在使用Android SDK(不确定是什么版本),代码在活动内运行,我创建了一个SD卡。
也许这是一个权限问题?我错过了什么吗?
我在获取文件大小时遇到问题。我有以下代码:
File file = new File("/sdcard/lala.txt");
long length = file.length();
长度始终为零,是的,为零。
我正在使用Android SDK(不确定是什么版本),代码在活动内运行,我创建了一个SD卡。
也许这是一个权限问题?我错过了什么吗?
该方法根据 javadoc 返回以下内容:File.length()
“由此抽象路径名表示的文件的长度(以字节为单位),如果文件不存在,则为 0L。某些操作系统可能会返回 0L 作为表示依赖于系统的实体(如设备或管道)的路径名。
如您所见,可以返回零:
我的钱在第二个案件上;即您有错误的文件名/路径名。尝试调用文件名,看看它告诉你什么。我想,另外两种情况也是可能的。File.exists()
(根据记录,基于 Linux 的系统上的大多数文件也具有明显的文件大小为零。Android是基于Linux的。/proc/...
如果要以 Kb 或 Mb 为单位获取文件夹/文件大小,请使用以下代码。它将有助于找到文件的准确大小。
public static String getFolderSizeLabel(File file) {
long size = getFolderSize(file) / 1024; // Get size and convert bytes into Kb.
if (size >= 1024) {
return (size / 1024) + " Mb";
} else {
return size + " Kb";
}
}
此函数将以字节的形式返回大小:
public static long getFolderSize(File file) {
long size = 0;
if (file.isDirectory()) {
for (File child : file.listFiles()) {
size += getFolderSize(child);
}
} else {
size = file.length();
}
return size;
}