无法打开文件“xxx”,因为没有此类文件

时间:2017-09-20 07:50:04

标签: swift macos cocoa nsfilemanager

我想打开.txt文件并将内容另存为String。 我试过这个:

let path = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("xxx.txt")
var contentString = try String(contentsOfFile: path.absoluteString)
print(path)

打印结果:

file:///Users/Username/Documents/xxx.txt

但我收到错误:

The file “xxx.txt” couldn’t be opened because there is no such file

该文件100%可用

注意:我使用swift 4 for macOS

2 个答案:

答案 0 :(得分:13)

您的path变量为URLpath.absoluteString返回 URL的字符串表示形式(在您的情况下是字符串 "file:///Users/Username/Documents/xxx.txt"),而不是基础文件路径 "/Users/Username/Documents/xxx.txt"

使用path.path是一种可能的解决方案:

let path = ... // some URL
let contentString = try String(contentsOfFile: path.path)

但更好的方法是避免转换并使用基于URL的方法 方法:

let path = ... // some URL
let contentString = try String(contentsOf: path)

答案 1 :(得分:0)

是的,我解决了我的问题。 我必须使用.path而不是.absoluteString:

var contentString = try String(contentsOfFile: path.path)