Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The file “xxx” couldn’t be opened because there is no such file [duplicate]

I would like to open a .txt file and save the content as a String. I tried this:

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

The print result:

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

But I get the error:

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

The file is 100% available

Notice: I working with swift 4 for macOS

like image 749
Ghost108 Avatar asked Sep 20 '17 07:09

Ghost108


2 Answers

Your path variable is an URL, and path.absoluteString returns a string representation of the URL (in your case the string "file:///Users/Username/Documents/xxx.txt"), not the underlying file path "/Users/Username/Documents/xxx.txt".

Using path.path is a possible solution:

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

but the better method is to avoid the conversion and use the URL-based methods:

let path = ... // some URL
let contentString = try String(contentsOf: path)
like image 160
Martin R Avatar answered Oct 29 '22 03:10

Martin R


thx, I solved my problem. I have to use .path instead of .absoluteString:

var contentString = try String(contentsOfFile: path.path)
like image 39
Ghost108 Avatar answered Oct 29 '22 04:10

Ghost108