我有一个文件路径作为字符串。我想:
我遇到的问题是,有时该文件路径涉及符号链接(符号链接)。也许对文件本身。也许到文件上面的一个目录。
[编辑]关闭这个,因为下面的代码(我开始使用),实际上工作正常,只涉及多个级别的用户错误。感谢输入人员。
func getUserResource(relativeFilePath: String) -> String? {
let fileManager = NSFileManager.defaultManager()
let userFilePath = NSHomeDirectory() + relativeFilePath
if(fileManager.fileExistsAtPath(userFilePath))
{
do {
return try String(contentsOfFile: userFilePath, encoding: NSUTF8StringEncoding);
} catch {
return nil;
}
}
return nil;
}
答案 0 :(得分:3)
如果您不确定符号链接是否指向文件或目录,则应使用fileExistsAtPath(path:, isDirectory:)
。对于符号链接,fileExistsAtPath
将始终返回true
,因为从技术上讲,该路径中有一个文件。通过将布尔指针传递给isDirectory
,您可以按照符号链接到文件或目录:
假设symlinkToSomeFile
是指向文件的符号链接,symlinkToSomeDir
是指向目录的符号链接。
let symlinkFilePath = NSHomeDirectory() + "/temp/symlinkToSomeFile"
let symlinkDirPath = NSHomeDirectory() + "/temp/symlinkToSomeDir"
var fileCheck: ObjCBool = false
var dirCheck: ObjCBool = false
print(fileManager.fileExistsAtPath(symlinkFilePath, isDirectory: &fileCheck)) // true
print(fileCheck) // false
print(fileManager.fileExistsAtPath(symlinkDirPath, isDirectory: &dirCheck)) // true
print(dirCheck) // true