Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Directory 在处理目录类时,如何识别Dart中的符号链接?_Directory_Dart_Symlink - Fatal编程技术网

Directory 在处理目录类时,如何识别Dart中的符号链接?

Directory 在处理目录类时,如何识别Dart中的符号链接?,directory,dart,symlink,Directory,Dart,Symlink,当我在Dart中实例化一个目录,并且该文件存在时,如何检查该目录是一个真正的文件夹,还是仅仅是一个符号链接?如果要从命令行检查以验证发生了什么, ls-al DIRNAME并在permissions部分中检查'l',并检查它在输出右侧指向什么 另见男子1统计 如果您想从Dart本身内部检查,我不知道如何进行。识别符号链接的方法是,路径是否与完整路径不同。目录没有fullPath()或fullPathSync(),但File.fullPathSync()在目录上工作。所以你可以这样做: bool-

当我在Dart中实例化一个目录,并且该文件存在时,如何检查该目录是一个真正的文件夹,还是仅仅是一个符号链接?

如果要从命令行检查以验证发生了什么, ls-al DIRNAME并在permissions部分中检查'l',并检查它在输出右侧指向什么

另见男子1统计


如果您想从Dart本身内部检查,我不知道如何进行。

识别符号链接的方法是,路径是否与完整路径不同。目录没有
fullPath()
fullPathSync()
,但
File.fullPathSync()
在目录上工作。所以你可以这样做:

bool-maybeIsSymlink(字符串路径){
var fullPath=新文件(path).fullPathSync();
返回路径!=完整路径;
}
但是,只有当
路径
是绝对路径,且其祖先都不是符号链接时,此选项才能正常工作。要解决此问题,可以获取目录父目录的完整路径,请附加目录名并进行比较:

bool-isSymlink(字符串路径字符串){
变量路径=新路径(路径);
var parentPath=path.directoryPath;
var fullParentPath=新文件.fromPath(parentPath).fullPathSync();
var expectedPath=新路径(fullParentPath).append(Path.filename).toString();
var fullPath=新文件.fromPath(path).fullPathSync();
返回完整路径!=预期路径;
}
请注意,我还没有测试过这一点,但我在Dart中处理了很多符号链接,这应该是可行的。如果
pathString
以“/”结尾,则必须将其删除。我通常从目录列表中获取路径,因此在递归目录结构时跟踪预期路径


您可以看到一个特殊的
listDirectory()
实现,它检测符号链接,并将
Symlink
实例与
文件和
目录一起发送到流中,这些实例位于buildtool的一个分支中:

在Leading edge中,现在有一个静态文件系统。isLinkSync(路径)方法,该方法将告诉您某物是否为符号链接;也是当它是一个断开的符号链接时

对于链接上的操作,我们添加了一个链接类。该守则现正进行检讨:

返回一个带有以下值之一的
FileSystemEntityType

  • FileSystemEntityType.DIRECTORY
  • FileSystemEntityType.FILE
  • FileSystemEntityType.LINK
  • 未找到文件系统类型。

谢谢,但我需要从Dart进行检查,是的。不支持符号链接。您不能创建这些,也不能检查条目是否为符号链接。考虑提交一个新的bug。发布包管理器使用命令行创建符号链接。
FileSystemEntity.typeSync(path)