2017-09-20 2 views
0

Ich möchte eine .txt-Datei öffnen und den Inhalt als String speichern. Ich versuchte dies:Die Datei "xxx" konnte nicht geöffnet werden, weil es keine solche Datei gibt.

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

Das Druckergebnis:

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

Aber ich bekomme die Fehlermeldung:

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

Die Datei ist zu 100% verfügbar

Hinweis: Ich Arbeits mit swift 4 für macOS

+0

Sandbox aktiviert ist? – Raymond

+0

nein, ich habe das deaktiviert – Ghost108

Antwort

3

Ihre path Variable ist ein URL und path.absoluteString kehrt eine String-Darstellung des URL (in Ihrem Fall die Zeichenfolge "file:///Users/Username/Documents/xxx.txt"), nicht die zugrunde liegende Datei Pfad "/Users/Username/Documents/xxx.txt".

Mit path.path ist eine mögliche Lösung:

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

aber die bessere Methode ist, die Umwandlung und verwenden Sie die URL-basierte Methoden zu vermeiden:

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

thx, ich habe mein Problem gelöst. Ich habe statt .absoluteString zu verwenden .path:

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