2017-08-31 90 views
0

我正試圖在設備上寫入數據。但我不希望它們公開給用戶,並希望將它們保存在自定義的存儲空間中。我想這個代碼使用Swift在自定義文件夾中寫入數據

let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true).appendingPathComponent("test/mytest") 
print(fileURL) 
try data?.write(to: fileURL) 

這是所獲得的路徑

file:///var/mobile/Containers/Data/Application/34567-234567dfgh-dfghj/Documents/test/mytest 

但我得到一個錯誤,告訴我,mytest不能在文件夾test

回答

0

發現你必須先創建目錄致電write

FileManager.default.fileExists(atPath: fileURL) 
var isDir: ObjCBool = ObjCBool(false) 
let exists = FileManager.default.fileExists(atPath: fileURL, isDirectory: &isDir) 
if !exists && !isDir.boolValue { 
    try! FileManager.default.createDirectory(at url: fileURL, withIntermediateDirectories: true) 
} 

雖然當您撥打url(for:in:appropriateFor:create:),您通過true到​​,目錄/test/mytest未創建因爲您追加它。所以,你必須創建它。

+0

這意味着使用這個解決方案時,每次我想寫一個新文件時都會重新創建該目錄,所以舊文件將被銷燬? – user567

+0

僅當所述目錄不存在時才創建目錄。您可以使用FileManager.default.fileExists(atPath:fullPath,isDirectory:&isDir)檢查目錄是否存在 –

+0

@ user567添加了一個檢查 – paper1111

相關問題