iOS 11中如何将字符串保存为.txt文件并在Files应用中查看
解决Files应用无法查看保存的.txt文件问题
我之前也碰到过一模一样的情况——沙盒里的文件明明能正常读写,但就是在Files里找不到踪影。核心原因其实很简单:默认的应用沙盒目录对Files是隐藏的,只要做两个关键配置,再配合正确的保存路径就能搞定。
第一步:配置Info.plist让应用目录在Files中可见
你需要在Info.plist里添加两个核心配置项,让Files能识别并展示你的应用文档目录:
- 添加
UIFileSharingEnabled(显示名称:Application supports iTunes file sharing),设置值为YES - 添加
LSSupportsOpeningDocumentsInPlace(显示名称:Supports opening documents in place),设置值为YES
这两个配置生效后,你的应用会在Files的「On My [你的设备名]」下生成一个专属文件夹,里面的所有文件都能被Files直接查看、编辑。
第二步:确保保存路径正确(以Swift为例)
你之前已经能读写文档目录,继续用这个路径就可以,代码示例如下:
// 获取应用的Documents目录URL guard let documentsDir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { print("无法获取Documents目录") return } // 拼接要保存的文件URL let targetFileURL = documentsDir.appendingPathComponent("savedText.txt") // 写入字符串 do { try "你要保存的字符串内容".write(to: targetFileURL, atomically: true, encoding: .utf8) print("文件保存成功:\(targetFileURL.path)") } catch { print("保存失败:\(error.localizedDescription)") }
可选:保存到iCloud Drive实现多设备同步查看
如果你希望文件直接出现在Files的iCloud Drive分区(而非应用专属文件夹),可以开启iCloud Documents能力:
- 在Xcode的「Signing & Capabilities」中添加「iCloud」能力,勾选「iCloud Documents」
- 使用iCloud容器路径保存文件:
// 获取iCloud容器的Documents目录 guard let iCloudDir = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents") else { print("无法获取iCloud目录,请检查iCloud配置") return } // 确保目录存在 try? FileManager.default.createDirectory(at: iCloudDir, withIntermediateDirectories: true) // 拼接文件URL并写入 let iCloudFileURL = iCloudDir.appendingPathComponent("savedText_iCloud.txt") do { try "你要保存的字符串内容".write(to: iCloudFileURL, atomically: true, encoding: .utf8) } catch { print("保存到iCloud失败:\(error.localizedDescription)") }
最后几个小提醒
- 配置完Info.plist后,记得重启应用和Files应用,有时候需要手动刷新才能看到新文件夹
- iOS 13以下版本可能不需要
LSSupportsOpeningDocumentsInPlace,但建议加上以兼容新版本 - 如果你用的是Objective-C,核心逻辑完全一致,只是获取目录的API语法略有不同
内容的提问来源于stack exchange,提问作者sanjeev Atharga




