一尘不染

如何访问Swift中应用程序捆绑包中包含的文件?

swift

我知道与此相关的一些问题,但是它们在Objective-C中。

如何 在实际的iPhone上*.txt使用Swift
访问应用程序中包含的文件?我希望能够从中读取和写入。如果您想看一下,是我的项目文件。如有必要,我很乐意添加详细信息。
*


阅读 258

收藏
2020-07-07

共1个答案

一尘不染

只需在应用程序捆绑中搜索资源

var filePath = NSBundle.mainBundle().URLForResource("file", withExtension: "txt")

但是,您无法写入它,因为它位于应用程序资源目录中,并且必须在文档目录中创建它才能写入

var documentsDirectory: NSURL?
var fileURL: NSURL?

documentsDirectory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).last!
fileURL = documentsDirectory!.URLByAppendingPathComponent("file.txt")

if (fileURL!.checkResourceIsReachableAndReturnError(nil)) {
    print("file exist")
}else{
    print("file doesnt exist")
    NSData().writeToURL(fileURL!,atomically:true)
}

现在您可以从 fileURL* 访问它 *

编辑-2018年8月28日

这是在 Swift 4.2中的操作方法

var filePath = Bundle.main.url(forResource: "file", withExtension: "txt")

在文档目录中创建它

if let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last {
   let fileURL = documentsDirectory.appendingPathComponent("file.txt")
   do {
       if try fileURL.checkResourceIsReachable() {
           print("file exist")
       } else {
           print("file doesnt exist")
           do {
            try Data().write(to: fileURL)
           } catch {
               print("an error happened while creating the file")
           }
       }
   } catch {
       print("an error happened while checking for the file")
   }
}
2020-07-07