fileInfo method
Returns metadata for the addressed path without following symlinks.
Implementation
@override
Future<Result<FileInfo, FileError>> fileInfo(String path) async {
final resolved = _resolve(path);
try {
final stat = await FileStat.stat(resolved);
final kind = switch (stat.type) {
FileSystemEntityType.file => FileKind.file,
FileSystemEntityType.directory => FileKind.directory,
FileSystemEntityType.link => FileKind.symlink,
_ => null,
};
if (kind == null) {
return Err(
FileError(
FileErrorCode.invalid,
'Unsupported file type',
path: resolved,
),
);
}
return Ok(
FileInfo(
name: resolved.split('/').last,
path: resolved,
kind: kind,
size: stat.size,
mtimeMs: stat.modified.millisecondsSinceEpoch,
),
);
} on Object catch (error) {
return Err(_toFileError(error, resolved));
}
}