如何使用Swift在任意位置创建文件?

问题描述

如果有绝对路径,如何在任意位置创建文件?我想在任意位置/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:给定绝对路径,如何在PC上的任意位置创建文本文件/具有随机扩展名的文件

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

谢谢!

解决方法

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

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

enter image description here

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

如果要将应用程序上载到Mac App Store,则必须保留沙箱并仅写入“用户选择的位置”。选择“读取/写入”而不是“用户选择的文件”旁边的“只读”。 (尽管它说的是“文件”,但它也包括目录)。这使您可以使用NSSavePanel之类的东西来写入用户选择的位置。