chi*_*zio 71 java android file
我在获取文件大小时遇到问题.我有以下代码:
File file = new File("/sdcard/lala.txt");
long length = file.length();
Run Code Online (Sandbox Code Playgroud)
并且长度始终为零,是零.
我使用的是Android SDK(不知道是哪个版本),代码在Activity里面运行,我创建了一个sdcard.
也许这是一个许可问题?有什么我想念的吗?
Ste*_*n C 90
该File.length()
方法根据javadoc返回以下内容:
"此抽象路径名表示的文件的长度(以字节为单位),如果该文件不存在,则为0L.某些操作系统可能会返回0L表示与系统相关的实体(如设备或管道)的路径名."
如您所见,可以返回零:
我的钱是第二个案子; 即你有错误的文件名/路径名.尝试调用File.exists()
文件名以查看它告诉您的内容.我想其他两个案例也是可能的.
(为了记录,/proc/...
基于Linux的系统上的大多数文件的表观文件大小也为零.而Android是基于Linux的.)
Pir*_*hah 28
如果要以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";
}
}
Run Code Online (Sandbox Code Playgroud)
此函数将以字节的形式返回大小:
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;
}
Run Code Online (Sandbox Code Playgroud)
小智 7
你应该使用:
File file = new File(Uri.parse("/sdcard/lala.txt").getPath());
Run Code Online (Sandbox Code Playgroud)
代替:
File file = new File("/sdcard/lala.txt");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
90757 次 |
最近记录: |