當我在Dart中實例化一個目錄並且該文件存在時,如何檢查目錄是真實文件夾還是僅僅是符號鏈接?在處理Directory類時如何識別Dart中的符號鏈接?
回答
如果路徑與完整路徑不同,則可以識別符號鏈接的方式。目錄沒有fullPath()
或fullPathSync()
,但File.fullPathSync()
可用於目錄。所以,你可以這樣做:
bool maybeIsSymlink(String path) {
var fullPath = new File(path).fullPathSync();
return path != fullPath;
}
然而,這只是正常工作時path
是絕對的,沒有它的祖先是符號鏈接。要解決,你可以得到該目錄的父目錄的完整路徑,追加目錄名和比較:
bool isSymlink(String pathString) {
var path = new Path(path);
var parentPath = path.directoryPath;
var fullParentPath = new File.fromPath(parentPath).fullPathSync();
var expectedPath = new Path(fullParentPath).append(path.filename).toString();
var fullPath = new File.fromPath(path).fullPathSync();
return fullPath != expectedPath;
}
請注意,我沒有測試過這一點,但我在飛鏢與符號鏈接處理了很多,這應該工作。如果pathString
以'/'結尾,則必須將其刪除。我通常最終會從目錄列表中獲取路徑,所以我在跟蹤目錄結構時追蹤預期路徑。
你可以看到一個特殊的listDirectory()
實現檢測符號連接,並與File
S和Directory
S IN的一個分支在buildtool一起發送Symlink
實例流:https://github.com/dart-lang/buildtool/blob/m4/lib/src/util/io.dart
這就像一個魅力,謝謝你! – Swader 2013-03-13 21:43:47
如果您想要從命令行檢查以確認發生了什麼,請在權限部分檢查l,然後檢查它在輸出右側指向「to」的內容。
也看到男子1個STAT
如果你想檢查從內部飛鏢本身,我不知道怎麼辦。
謝謝,但我需要從Dart檢查,是的。 – Swader 2013-03-13 00:10:35
在流血的邊緣,現在有一個靜態FileSystemEntity。 isLinkSync(路徑)方法,它會告訴你是否有符號鏈接;當它是一個破碎的符號鏈接時。
http://api.dartlang.org/docs/bleeding_edge/dart_io/FileSystemEntity.html
有關的鏈接,我們將鏈接添加類操作。該代碼是出了現在審查:
好消息,謝謝! – Swader 2013-03-14 07:38:02
FileSystemEntity.typeSync(path)
返回FileSystemEntityType
與價值觀
FileSystemEntityType.DIRECTORY
FileSystemEntityType.FILE
FileSystemEntityType.LINK
- 之一
- 1. 如何讓Dropbox處理符號鏈接?
- 2. 我如何獲得以下代碼來識別符號鏈接?
- 3. 反轉/調試 - 識別應用程序中的符號鏈接
- 4. 如何處理包含Windows上符號鏈接的git倉庫
- 5. 如何處理Linux和Windows之間的符號鏈接?
- 6. 如何處理源代碼管理下的項目中的符號鏈接?
- 7. 識別符號
- 8. 符號識別
- 9. 如何在使用Subversion時正確處理符號鏈接文件夾?
- 10. 音樂識別和信號處理
- 11. 在DART中處理事件
- 12. 識別Windows Active Directory連接 - Windows 8
- 13. 如何處理http鏈接?
- 14. 如何處理css中的超鏈接?
- 15. Windows中的Apache虛擬主機 - 我該如何處理符號鏈接?
- 16. 我如何識別關係= NoFOLLOW鏈接
- 17. virtualenv:太多級別的符號鏈接
- 18. 如何獲取符號鏈接指向的符號鏈接模板中的id?
- 19. 如何Android處理在PHONENUMBER的+ - 符號
- 20. 在PHP中識別圖像鏈接
- 21. 如何在wp中正確識別img src的鏈接
- 22. 如何識別實現接口的類?
- 23. 在UNIX中處理信號的差別
- 24. 在批處理文件中查找/替換文本時如何處理&符號?
- 25. 正確處理mysql_XXXX默認鏈接標識符參數
- 26. 如何在類級別處理未處理的異常
- 27. 如何在沒有符號鏈接
- 28. 處理Windows文件系統上的unix符號鏈接文件
- 29. 識別電子郵件中的鏈接
- 30. 如何處理VHDL中的有符號和無符號數字?
不支持符號鏈接。你不能創建這些,也不能檢查一個條目是否是符號鏈接。考慮提交一個新的錯誤。 Pub包管理器使用命令行來創建符號鏈接。 – 2013-03-13 01:22:47