2016-06-01 10 views
6

파일 경로가 문자열로 있습니다.신속한 파일 경로에서 데이터를 읽을 때 심볼릭 링크를 처리하는 방법

  1. 테스트가
  2. 파일이 나는 데 문제가 가끔 파일 경로가 심볼릭 링크를 포함한다는 것입니다

문자열로 파일의 내용을 읽기가 있다면 내가 원하는 : (symlink). 파일 자체 일 수도 있습니다. 어쩌면 파일 위의 디렉토리 중 하나에있을 수 있습니다.

[편집] 다음 코드 (실제로 시작한 것)가 실제로 잘 작동하기 때문에 여러 수준의 사용자 오류가있었습니다. 입력 된 사람들에게 감사드립니다.

+0

나는 symlink ('ln -s '로 만든)를 통해 텍스트 파일의 내용을 읽었을 때 코드를 사용했다. 이것이 당신 문제라고 확신합니까? – Moritz

+0

또한 앱이 샌드 박스 처리됩니까? – Moritz

+0

왜 존재를 명시 적으로 확인합니까? 내용을 읽으려고 시도하고 적절하지 않은 파일을 처리하십시오. – Tali

답변

3

심볼릭 링크로 파일 또는 디렉토리가 있는지 확실하지 않은 경우 fileExistsAtPath(path:, isDirectory:)을 사용해야합니다. fileExistsAtPath은 기술적으로 그 경로에 파일이 있기 때문에 symlink에 항상 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