2012-12-07 70 views
0

我有存儲在的NSString *的importfile一個的importfile(印有的NSLog%@):的NSFileManager moveItemAtPath:toPath:錯誤:改變文件名

/var/mobile/Applications/5CE1D252-E56A-4AAC-B88E-5B0CEFFF55B3/Library/Caches/tmp/temp_695D39E3-3359-415F-9C0D-243E2E117B8B-456-0000001384C17BBA.tmpfile 

我然後接收destinationFile的NSString * destinationFile的值(印有的NSLog%@)

/var/mobile/Applications/5CE1D252-E56A-4AAC-B88E-5B0CEFFF55B3/Documents/Str%208829%20-%20Test.500887280 

然後我用的NSFileManager移動文件:

NSFileManager* fileManager = [NSFileManager defaultManager]; 
assert(fileManager != nil); 
NSError* error = nil; 
[fileManager moveItemAtPath:importFile toPath:destinationFile error:&error]; 

問題是移動後的實際文件名稱與請求的目的地文件不同:

Str%25208829%2520-%2520Test.500887280 

這是怎麼回事?那些額外的三個25看起來有什麼區別?

+0

%25是替換%字符。 – rmaddy

+0

顯示如何設置'importFile'和'destinationFile'的代碼。 – rmaddy

回答

1

它看起來像在文件名中%被編碼爲%25(爲百分之%的代碼)

你可能會檢查這一個: URL-encoding and HTML-encoding NSStrings

+0

謝謝。確實對destinationFile文件名稱做了「有趣」的事情,以及它是如何創建的。我已經用更好的字符過濾替換了那些,現在事情又恢復了良好。再次感謝您的提示。 – TrekOnTV2017

1

你必須定義文件類型和文件擴展名。然後你只需要將文件從一個目錄移動到另一個...你也可以重命名文件

NSFileManager *manage = [NSFileManager defaultManager]; 

NSString *path = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/%@",Text.txt]; 
NSString *newPath = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/%@",newText.txt]; 

[manage moveItemAtPath:path toPath:newPath error:&error];