반응형
NSFileManager 파일이 있음AtPath:isDirectory 및 swift
기능을 사용하는 방법을 이해하려고 합니다.fileExistsAtPath:isDirectory:
하지만 난 완전히 길을 잃었어요
다음은 제 코드 예입니다.
var b:CMutablePointer<ObjCBool>?
if (fileManager.fileExistsAtPath(fullPath, isDirectory:b! )){
// how can I use the "b" variable?!
fileManager.createDirectoryAtURL(dirURL, withIntermediateDirectories: false, attributes: nil, error: nil)
}
나는 어떻게 내가 그 값에 접근할 수 있는지 이해할 수 없습니다.b
가변 포인터.설정 여부를 확인하려면 어떻게 해야 합니까?YES
또는NO
?
두 번째 매개 변수는 다음과 같은 것입니다.UnsafeMutablePointer<ObjCBool>
그 말은 당신이 당신의 주소를 전달해야 한다는 것을 의미합니다.ObjCBool
변수.예:
var isDir : ObjCBool = false
if fileManager.fileExistsAtPath(fullPath, isDirectory:&isDir) {
if isDir {
// file exists and is a directory
} else {
// file exists and is not a directory
}
} else {
// file does not exist
}
Swift 3 및 Swift 4에 대한 업데이트:
let fileManager = FileManager.default
var isDir : ObjCBool = false
if fileManager.fileExists(atPath: fullPath, isDirectory:&isDir) {
if isDir.boolValue {
// file exists and is a directory
} else {
// file exists and is not a directory
}
} else {
// file does not exist
}
다른 답변을 더 쉽게 사용할 수 있도록 개선하려고 했습니다.
enum Filestatus {
case isFile
case isDir
case isNot
}
extension URL {
var filestatus: Filestatus {
get {
let filestatus: Filestatus
var isDir: ObjCBool = false
if FileManager.default.fileExists(atPath: self.path, isDirectory: &isDir) {
if isDir.boolValue {
// file exists and is a directory
filestatus = .isDir
}
else {
// file exists and is not a directory
filestatus = .isFile
}
}
else {
// file does not exist
filestatus = .isNot
}
return filestatus
}
}
}
베이스를 과부하 시키려고요여기 URL을 찍는 제 것이 있습니다.
extension FileManager {
func directoryExists(atUrl url: URL) -> Bool {
var isDirectory: ObjCBool = false
let exists = self.fileExists(atPath: url.path, isDirectory:&isDirectory)
return exists && isDirectory.boolValue
}
}
파일 관리자에 간단한 확장자를 추가하여 이 기능을 조금 더 깔끔하게 만들었습니다.도움이 될까요?
extension FileManager {
func directoryExists(_ atPath: String) -> Bool {
var isDirectory: ObjCBool = false
let exists = fileExists(atPath: atPath, isDirectory:&isDirectory)
return exists && isDirectory.boolValue
}
}
이렇게 작게 썼어요.FileManager
이 통화를 보다 신속하게 만드는 내선 번호:
extension FileManager {
/// Checks if a file or folder at the given URL exists and if it is a directory or a file.
/// - Parameter path: The path to check.
/// - Returns: A tuple with the first ``Bool`` representing if the path exists and the second ``Bool`` representing if the found is a directory (`true`) or not (`false`).
func fileExistsAndIsDirectory(atPath path: String) -> (Bool, Bool) {
var fileIsDirectory: ObjCBool = false
let fileExists = FileManager.default.fileExists(atPath: path, isDirectory: &fileIsDirectory)
return (fileExists, fileIsDirectory.boolValue)
}
}
용도는 다음과 같습니다.
let filePath = "/Users/Me/Desktop/SomeDirectory"
let (fileExists, fileIsDirectory) = FileManager.default.fileExistsAndIsDirectory(atPath: filePath)
// -> (true: something exists at this path, true: the thing is a directory)
언급URL : https://stackoverflow.com/questions/24696044/nsfilemanager-fileexistsatpathisdirectory-and-swift
반응형
'source' 카테고리의 다른 글
두 날짜 객체의 시간 차이를 구하는 방법은? (0) | 2023.09.06 |
---|---|
Http StaticInjectorError에 대한 공급자가 없습니다. (0) | 2023.09.01 |
CLI에서 XDebug를 PHPUunit과 함께 실행하려면 어떻게 해야 합니까? (0) | 2023.09.01 |
jQuery UI 자동 완성을 선택한 후 양식 필드 지우기 (0) | 2023.09.01 |
연결된 sql 문 삽입 (0) | 2023.09.01 |