mas*_*omi 6 symlink nsfilemanager symlink-traversal swift
我有一个文件路径作为字符串.我想要:
我遇到的问题是,有时该文件路径涉及符号链接(符号链接).也许对文件本身.也许到文件上面的一个目录.
[编辑]关闭这个,因为下面的代码(我开始),实际上工作正常,只涉及多个级别的用户错误.感谢输入人员.
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;
}
Run Code Online (Sandbox Code Playgroud)
如果您不确定符号链接是否指向文件或目录,则应该使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
701 次 |
| 最近记录: |