2012-05-19 13 views
5

Herhangi bir nedenle fopen, yol yolunu belge yoluna dönüştürmüş olmama rağmen No such file or directory hatasını veriyor. fopen sorunu

NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
NSString *filePath = [docsPath stringByAppendingPathComponent:filename]; 

I UTF8String yöntem ve dosya açmaya çalışırken (I için kesin değerler uzaklaştırıldı aşağıdaki tam yol yazdırılır

if ((fh=fopen(filename, "r+b")) == NULL){ 
    perror("fopen"); 
    return -1; 
} 

ile okuma modunda sadece açık kullanılarak NSString geçmesi uygulamalar fiili dir adı)

/var/mobile/Applications/#####/Documents/testImages.pak

Neden fopen dosyayı algılamıyor? Hedefe ekledim ve dosya denetçisinde konum ayarlarını değiştirmeyi bile denedim. Relative to Group ve Relative to Project

+1

Dosya adı yerine filePath nasıl açılır? –

+0

Dosya adı değişkeni C API'sinin kendisi içindedir. Obj c kodu bir sarıcıdadır. Ben UTP8String ile filePath bir char * – jarryd

+0

bekliyoruz c işlevi bekliyoruz, tam olarak ne yapmaya çalıştığını bilmiyorum, ama yerli NSFileManager ve NSFileHandle kullanmanızı öneririm, onlar fopen hemen hemen her şey için iyi olmalıdır. – Stavash

cevap

7

Aşağıdaki yöntemi kullanarak NSString'i bir char * 'a dönüştürmeniz ya da dosyanın düzgün şekilde eşlenmemesi gerekir. sistemi.

char const *path_cstr = [[NSFileManager defaultManager] fileSystemRepresentationWithPath:pathString]; 

Artık doğrudan fopen() içinde kullanabilirsiniz.