2010-03-31 113 views
2

顯然,NSFileManager是無法刪除的mkstemp()創建的文件。下面是一些測試代碼來證明這一點:無法在Mac OS X中刪除)由mkstemp(創建的文件

char pathCString[] = "/tmp/temp.XXXXXX"; 
int fileDescriptor = mkstemp(pathCString); 
if (fileDescriptor == -1) { 
    NSLog(@"mkstemp failed"); 
} else { 
    close(fileDescriptor); 
    NSURL *url = [NSURL URLWithString:[NSString stringWithCString:pathCString encoding:NSASCIIStringEncoding]]; 
    NSLog(@"URL: %@", url); 
    NSError *error; 
    if (![[NSFileManager defaultManager] removeItemAtURL:url error:&error]) { 
     NSLog(@"could not delete file: %@", error); 
    } 
} 

下面是我在日誌中看到,當我運行上面的代碼:

URL: /tmp/temp.A7DsLW 
could not delete file: Error Domain=NSCocoaErrorDomain Code=4 UserInfo=0x1001108a0 "The file 「temp.A7DsLW」 doesn’t exist." 

我在Snow Leopard上運行此。關於爲什麼發生問題和/或如何解決問題的任何想法?

謝謝!

+0

事實證明,使用的unlink()不工作,所以顯然這是一個的NSFileManager問題。 – splicer 2010-03-31 20:47:54

回答

4

不要使用-URLWithString :,使用-fileURLWithPath:您沒有提出有效的文件URL。將路徑字符串直接傳遞給NSFileManager的-removeItemAtPath:當然會更短。

此外,文件路徑,總是與-stringWithUTF8String路徑字符串:。

+0

謝謝Rainer!這就是訣竅:) – splicer 2010-03-31 22:06:03

相關問題