2014-09-25 22 views
0

我試圖將文件複製到使用臨時目錄:NSFileManager - 使用空格嗎?

NSError *error = nil; 
[[NSFileManager defaultManager] copyItemAtPath:pathWithSpaces 
             toPath:fullPath 
             error:&error]; 
if(error) { 
    NSLog(@"Error!!!"); 
} 
else { 
    NSLog(@"Saved to temp directory"); 
} 

但是,當我試圖複製其路徑中有空格的文件時,它拋出一個錯誤。

任何人都有這方面的經驗? 感謝

的日誌如下:

2014-09-25 10:36:47.798 MyApp[25463:1128329] /Users/USER/Pictures/Screenshots/Screen%20Shot%202014-09-25%20at%2010.07.49.png 
2014-09-25 10:36:47.798 MyApp[25463:1128329] Error!!! 

(我選擇用空格的文件名)

+0

嘗試使用「\」而不是「」,「\」是反斜槓+空格。 – KudoCC 2014-09-25 09:29:45

+0

會很好,如果你打印錯誤而不是「錯誤!!!」 – 2014-09-25 09:41:40

回答

1

首先,不檢查error除非該方法返回false。這不是確定方法是否失敗的準確方法。只有方法的返回值告訴你。其次,如果您要記錄發生錯誤時的日期,請寫出錯誤對象以瞭解發生了什麼。

第三,-copyItemAtPath:toPath:error:處理空間的路徑很好。它是shell(終端或其他任何地方的命令行),它可能將空格當作分隔符並因此而混亂。任何不使用shell的應用程序,也就是任何可編程的API,不需要引用或轉義的空間或類似的東西。

最後,你的「路徑」看起來不像是一條真正的路徑。您有/Users/USER/Pictures/Screenshots/Screen%20Shot%202014-09-25%20at%2010.07.49.png。這看起來像你砍了一個URL字符串,百分比轉義的空格。您不能簡單地剝離前導「file://」(或「file // localhost /」)以從文件URL獲取正確的路徑。如果您的網址爲NSURL,只需訪問其path屬性即可。

你需要重新考慮你如何計算pathWithSpaces,因爲你肯定是做錯了。

+0

很好地提到了具體的重要事情。 – ViruMax 2018-01-05 05:38:09