簡體   English   中英

從目錄中讀取所有文件?

[英]Read all files from a directory?

我正在嘗試在我的資產中創建一個文件夾,然后獲取其中的文件列表。 聽起來很簡單,但沒有明確的答案來說明如何做到這一點。

  1. 即使要從主目錄中獲取列表,大多數人在 Swift 3 上也做不到,請閱讀此處: 獲取文檔文件夾中的文件列表

使用:

let fileMngr = FileManager.default;

// Full path to documents directory
let docs = fileMngr.urls(for: .documentDirectory, in: .userDomainMask)[0].path

// List all contents of directory and return as [String] OR nil if failed
return try? fileMngr.contentsOfDirectory(atPath:docs)

不工作。

  1. 從特定文件夾讀取,我無法理解如何快速獲取它的路徑。

任何從文件夾中讀取的真正有效的示例?

如果您想獲取個人目錄中的所有文件,這里是簡單的答案

    do {
        let documentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
        let Path = documentURL.appendingPathComponent("yourDirectoyName").absoluteURL
        let directoryContents = try FileManager.default.contentsOfDirectory(at: Path, includingPropertiesForKeys: nil, options: [])
    }
    catch {
        print(error.localizedDescription)
    }

然后,如果您想讀取所有具有特殊擴展名的文件,您可以這樣做

static func listAllFileNamesExtension(nameDirectory: String, extensionWanted: String) -> (names : [String], paths : [URL]) {

    let documentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
    let Path = documentURL.appendingPathComponent(nameDirectory).absoluteURL

    do {
        try FileManager.default.createDirectory(atPath: Path.relativePath, withIntermediateDirectories: true)
        // Get the directory contents urls (including subfolders urls)
        let directoryContents = try FileManager.default.contentsOfDirectory(at: Path, includingPropertiesForKeys: nil, options: [])

        // if you want to filter the directory contents you can do like this:
        let FilesPath = directoryContents.filter{ $0.pathExtension == extensionWanted }
        let FileNames = FilesPath.map{ $0.deletingPathExtension().lastPathComponent }

        return (names : FileNames, paths : FilesPath);

    } catch {
        print(error.localizedDescription)
    }

    return (names : [], paths : [])
}

因此,如果您想將所有 json 文件都放在您的個人目錄中

let allJsonNamePath = listAllFileNamesExtension(nameDirectory:"yourDirectoryName", extensionWanted: "json")

斯威夫特 4/5

let documentDirectoryPath:String = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
let myFilesPath = "\(documentDirectoryPath)/myfolder"
let filemanager = FileManager.default
let files = filemanager.enumerator(atPath: myFilesPath)
while let file = files?.nextObject() {
    print(file)
}

實際上,令人驚訝的是,兩天沒有人可以告訴我這里的真正問題。 創建,與文件夾拖入項目中完全不同。

出於某種原因,對於 Apple,文件總是很復雜。 我必須找出一種不太直觀的方法,即一個看起來像文件夾的組只不過是一種查看某些內容的好方法,並且不會創建一個可由文件管理器訪問的真實文件夾。

這種奇怪的方法對於非常專業的程序員來說可能是直觀的,但對於任何簡單的人來說真的不是。

簡單的說,在Xcode外面創建一個藍色的文件夾,拖進去。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM