以下是我的代码,我将newfile2放在与main.m所在目录相同的目录中(见图),但我收到File read failed
错误。我哪里错了?
int main(int argc,const char * argv []) {
@autoreleasepool {
NSFileManager *fm;
NSData *fileData;
fm = [NSFileManager defaultManager];
//Read from the file nwefile2
fileData = [fm contentsAtPath:@"newfile2"];
if (fileData == nil) {
NSLog(@"File read failed");
return 1;
}
//Write the data to a file
if ([fm createFileAtPath:@"newfile3" contents:fileData attributes:nil] == NO) {
NSLog(@"File creation failed");
return 2;
}
NSLog(@"File copy successful");
}
return 0;
}
答案 0 :(得分:0)
问题是这一行没有说明在哪里找到文件:
fileData = [fm contentsAtPath:@"newfile2"];
您假设部分路径将找到该文件(可能是因为您认为工作目录与您的程序是同一目录?),但这是一个错误的假设。没有人知道工作目录是什么!您必须具体说明文件的位置。
答案 1 :(得分:0)
在NSBundle类的api下面使用正确的方法来指定路径,尽管硬编码路径: -
- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension
写如下: -
fileData = [fm contentsAtPath:[[NSBundle mainBundle]
pathForResource:@"newfile2" ofType:@"fileExt"]];
注意: - 在获取文件路径之前,您的文件应该出现在资源目录中。