public static FileSystemInfo uriToFile(Uri uri)
{
if (uri.scheme() != null && uri.scheme() != "file")
throw ArgErr.make("Invalid Uri scheme for local file: " + uri).val;
string path = uriToPath(uri);
if (System.IO.Directory.Exists(path)) return new DirectoryInfo(path);
if (System.IO.File.Exists(path)) return new FileInfo(path);
if (uri.isDir()) return new DirectoryInfo(path);
return new FileInfo(path);
}