Tag: 文件管理器

在Swift中读取,写入和删除文件

当今大多数普通应用程序都是通过HTTP进行通信的。 虽然我们可以通过这种方式读取和写入数据,但仍然需要将数据保存到设备本地文件中,这仍然非常普遍。 让我们讨论一下如何完成,然后提出一种更简单的方法。 TL; DR 如果您不希望自己学习如何做,请在GitHub上查看我的File项目(但您确实应该知道它是如何完成的,因此请继续阅读!)。 FileManager和URL 刚开始在iOS中进行文件处理时,它会令人望而生畏。 您必须学习FileManager,在您发现需要传递URL之前,它看起来还不错。 然后,您停下来思考:“等等,URL与保存文件有什么关系? 这令人困惑。” Apple选择使用URL作为通用语言来传达文件在文件系统中的位置。 一旦您对这个概念有所了解,它确实非常巧妙。 通过字符串处理文件位置可能会很混乱(我有数十行的旧服务器代码用于遍历目录和文件以证明这一点),但是使用URL会将它们包装在一个非常需要的结构中,该结构相对容易理解和理解。如果您以前使用过URL进行联网,则很熟悉。 即使您以前从未使用过URL,我们所需的基础知识也确实很容易。 实际上,可以将其全部简化为包含三个简单步骤的模式: 1.创建目标目录URL 2.使用目录URL创建文件URL 3.将数据保存到文件URL 让我们看一下这是如何完成的。 注意:如果您以前从未使用过FileManager,请知道它使用Singleton模式,并且不直接实例化FileManager,而是使用FileManager.default来调用FileManager的属性和函数。 如果您不熟悉单例模式,那是确保在应用程序的生命周期中仅实例化类的一个实例的一种方法。 目录网址 首先,我们需要一个用于文档目录的URL。 您不必将所有内容都保存到documents目录,但这是最合乎逻辑的开始,并且一旦您知道如何保存在那里,就很容易保存到其他位置。 我们将使用以下代码来获取文档目录的URL: 让directoryURL = FileManager.default.urls(用于:.documentDirectory,在:.userDomainMask中)[0] 我们在这里要做的是向FileManager索要用户主目录(或在iOS中为应用程序的主目录)中文档目录的URL列表。 这将返回一个数组,其第一个条目将包含documents目录,这就是为什么我们在语句末尾指定[0]的第一个数组索引的原因。 这将返回文档目录的URL对象。 真的就是这么简单。 档案网址 现在我们有了要保存文件的目录的URL,让我们创建文件本身的URL。 为此,我们使用URL(fileURLWithPath:relativeTo:) 。 fileURLWithPath参数中引用的路径是文件名,不包括任何文件扩展名。 例如,如果我们想要一个名为“ myFile.txt”的文件,则fileURLWithPath将为“ myFile”(我稍后将解决“ .txt”扩展名)。 接下来, relativeTo参数是文件将保存到的目录。 该参数带有一个URL ,您猜到了,我们将简单地传入上面的URL : 让fileURL = URL(fileURLWithPath:“ myFile”,relativeTo:directoryURL) 好吧,那文件扩展名呢? 要添加该代码,只需在调用末尾添加appendingPathExtension(:) ,如下所示: let […]