当前位置: 首页 > 面试题库 >

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

陶文林
2023-03-14
问题内容

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

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


问题答案:

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

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")
   }
}


 类似资料:
  • 简单的OSGi应用程序与包内的依赖关系。 我在玩karaf。我从写一个简单的Rest应用程序开始。https://github.com/YaroslavTir/osgi-jersey-hibertate/tree/stackoverflow/examples/karaf-rest-core 我将karaf示例作为backbond,使用restendpoint运行我的第一个包非常简单,但是当我添加m

  • 我在NetBeans平台(RCP)上开发了一个JavaSwing应用程序。我想将Windows JRE与NetBeans生成的安装程序一起包含,以防PC没有安装JRE,但我不知道如何做到这一点。我尝试按照以下说明操作,但失败了(我发现这些说明假设您完全了解JDK和JRE上的所有内容,例如,我会得到消息“pack 200”不被识别为内部或外部命令......似乎有些路径是错误的或过时的): 如何在安

  • 问题内容: 在Symfony2应用的路由配置中,我可以引用这样的文件: 有什么方法可以访问控制器或其他PHP代码中与包相关的文件?特别是,我尝试使用Symfony \ Component \ Yaml \ Parser对象来解析文件,并且我不想绝对引用该文件。本质上,我想这样做: 我已经签出了Symfony \ Component \ Finder \ Finder类,但我认为这不是我想要的。有任

  • 问题内容: 我正在使用aQute Bnd工具集创建OSGi捆绑包,并打包了一些相关的“资源”文件。我创建的资源目录中包括 .css文件和 .xsd文件。 我在 bundle.bnd 文件中包含以下内容: 当我进行构建时,生成的 .jar文件在jar捆绑包文件顶部目录的resources目录中具有 .css和* .xsd文件。 但是,在实际的代码中,我很难尝试将其作为类路径的一部分: 我尝试了以下方

  • 我正在将我的spring-java项目转移到OSGi。 我有一些依赖项,这些依赖项在spring ebr repo或maven repo中不能作为包提供。处理它们的最佳方法是什么? null

  • 我是OSGi的新手。我正在使用Apache Felix。我已经构建了一个捆绑包,并且具有依赖性。当我尝试使用启动它会给我这个错误。 org . OSGi . framework . bundle exception:无法解析lk . ucsc . research . belly runner[20](R 20.0):缺失需求[lk . ucsc . research . belly runner