我正在尝试使用以下代码访问文件的长度:-
File file = File('/storage/emulated/0/Android/data/com.example.mynewapp/files/Pictures/IMG_20200322_202358.jpg');
final length = await file.length();
我得到了以下异常-
FileSystemException:无法检索文件的长度,路径='/storage/emulated/0/Android/data.com/example.mynewapp/files/Pictures/IMG_20200322_202358.jpg'
我遵循了帖子中的建议,并在没有等待的情况下尝试:-
final length = file.lengthSync();
还有
final length = File(file.resolveSymbolicLinksSync()).lengthSync()
但我最终还是得到了同样的例外。
这里有一个使用函数的解决方案,该函数将为您提供格式整洁的字符串形式的文件大小。
进口:
import 'dart:io';
import 'dart:math';
输出:
File image = new File('image.png');
print(getFilesizeString(bytes: image.lengthSync()}); // Output: 17kb, 30mb, 7gb
功能:
// Format File Size
static String getFileSizeString({@required int bytes, int decimals = 0}) {
const suffixes = ["b", "kb", "mb", "gb", "tb"];
var i = (log(bytes) / log(1024)).floor();
return ((bytes / pow(1024, i)).toStringAsFixed(decimals)) + suffixes[i];
}
如果你只想得到一个长度而不关心单位,那么你确实关心大小条件。你可以通过以下代码获得文件大小:
final bytes = image.readAsBytesSync().lengthInBytes;
final kb = bytes / 1024;
final mb = kb / 1024;
您有读取此文件的权限吗?尝试检查,然后使用lengthSync直接获取值,而不是值的未来我试过了,添加存储权限后就可以了
File f = new File('your path');
s = f.lengthSync()
print(s);