2016-03-28 121 views
0

我正在嘗試讀取已成功下載並保存在文檔目錄中的文件。但是,當我嘗試閱讀它時,如果失敗。iOS - 無法讀取位於文檔目錄中的文件

以下是錯誤:

2016-03-28 21:00:26.585 App[569:4103] Path is /var/mobile/Applications/3AFA2430-C0DC-44CD-95F8-A89D82B2C348/Documents/combo.bin 
2016-03-28 21:00:26.603 App[569:4103] Error in reading Error Domain=NSCocoaErrorDomain Code=257 "The operation couldn’t be completed. (Cocoa error 257.)" UserInfo=0x17df29d0 {NSFilePath=/var/mobile/Applications/3AFA2430-C0DC-44CD-95F8-A89D82B2C348/Documents/combo.bin, NSUnderlyingError=0x17df90b0 "The operation couldn’t be completed. Permission denied"} 

這裏是我的代碼:

NSError *error; 
    NSData *firmwareContentData = [NSData dataWithContentsOfFile:FIRMWARE_LOCAL_PATH options:NSDataReadingMappedIfSafe error:&error]; 

    NSLog(@"Path is %@", FIRMWARE_LOCAL_PATH); 

    if(error) 
    { 
     NSLog(@"Error in reading %@", error); 

     return; 
    } 

本地路徑是

#define FIRMWARE_LOCAL_PATH [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"combo.bin"] 

我嘗試使用NSTemporaryDirectory(),使用的NSFileManager得到文件的內容,但它們都不起作用。任何想法爲什麼?提前致謝!

+0

你確定combo.bin是文件而不是目錄嗎?你可以確保使用一些探索應用程序來分析你的iOS設備目錄結構(我更喜歡名爲iExplore的應用程序) – heximal

+0

@heximal我是110%肯定combo.bin是一個文件。這是我們用來升級設備的固件。我從我們的服務器上下載了它,然後我將讀取該文件並通過套接字將其發送到設備。 –

+0

@heximal好吧,忘了我剛纔所說的。你是對的。我錯誤地將combo.bin作爲目錄。我認爲我應該將包括文件名的完整路徑傳遞給下載方法。沒有想到這一點。謝謝你指出! :) –

回答

1

您有權限錯誤。您沒有正確的權限來打開文件。無論你從哪裏得到它,你都被鎖在外面。您可以嘗試在模擬器中下載它,並通過Apple的文件系統檢查它,以查看它實際下載的權限。路徑是:

〜/ Library/Developer/CoreSimulator/Devices // data/Containers/Data/Application // Documents。

將兩個大的隨機字符串替換爲顯示今日mod日期的目錄,或NSLog從iOS應用程序中獲取真實路徑。

+0

謝謝你的答案。看起來我犯了一個可怕的錯誤,將一個帶有文件名的路徑傳遞到我所稱的下載方法中。我仍然從你那裏學到了些東西。再次感謝! :) –

相關問題