Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
789 views
in Technique[技术] by (71.8m points)

objective c - fopen issue in iOS

For some reason fopen gives the error No such file or directory even though I have converted the path to the documents path.

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

I pass the NSString using the UTF8String method and only open in read mode with

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

The following full path is printed out when trying to open the filename(I removed the exact values for the applications actual dir name)

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

Why would fopen not detect the file? I have added it to the target and even tried changing the location settings in the file inspector to Relative to Group and Relative to Project

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You have to convert the NSString to a char* using the following method, or it will not properly map to the file system.

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

Now you can use it directly in fopen().


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...