【问题标题】:How do you create files in arbitrary locations using Swift?如何使用 Swift 在任意位置创建文件?
【发布时间】:2020-08-30 07:06:43
【问题描述】:

如果你有绝对路径,你如何在任意位置创建文件?我想在任意位置/Users/me/random/project3/<moreStuffInThePath 创建一个文件。我该怎么做呢?

要创建一个目录,我会这样做:

try FileManager.default.createDirectory(atPath: "/Users/me/random/project3/<directoryName>"

这适用于目录。

但是创建文件的对应项不起作用:

FileManager.default.createFile(atPath: "Users/me/random/project3/something.txt", contents: someString.data(using: .utf8)) // always returns false

我在创建文件时检查了其他堆栈溢出线程。我发现的所有内容都是关于在 .documentDirectory 中创建文件,或者它已经过时了。

例如:How to create text file for writing

Create empty file swift

Read and write a String from text file

TLDR:如果我有绝对路径,如何在电脑上的任意位置创建具有随机扩展名的文本文件/文件?

如果有人能解释为什么所有关于这个问题的教程都是关于文档目录的,我也将不胜感激。为什么如此重要?

谢谢!

【问题讨论】:

  • 问个问题,你是先创建目录的吗?
  • 是的,目录存在。
  • 我的回答能回答你的问题吗?如果是,请考虑通过单击该复选标记接受它!

标签: swift file file-io


【解决方案1】:

这很可能是因为您的应用已被沙盒化。

转到您的项目设置,选择 macOS 目标并转到“签名和功能”。您应该会看到如下内容:

如果您的应用需要在任意位置创建文件,您必须通过单击右上角的“x”来移除应用沙箱。请注意,这将导致您的应用被 Mac App Store 拒绝。

如果您想将您的应用上传到 Mac App Store,那么您必须保留沙盒,并且仅写入“用户选择的位置”。选择“用户选择的文件”旁边的“读/写”而不是“只读”。 (虽然它说的是“文件”,但这也包括目录)这允许您使用 NSSavePanel 之类的方式写入用户选择的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-29
    • 2012-11-12
    • 2014-12-23
    • 1970-01-01
    • 2010-10-18
    • 2014-02-10
    • 2012-05-30
    • 1970-01-01
    相关资源
    最近更新 更多