我有以下代码从iphone的文档目录中获取文件:
NSString *docsDir;
NSString *realpath;
NSArray *dirPaths;
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = dirPaths[0];
realpath=[[NSString alloc] initWithString:
[docsDir stringByAppendingPathComponent: @"2_program.db"]];
NSFileManager *filemgr = [NSFileManager defaultManager];
if ([filemgr fileExistsAtPath: realpath ] == YES)
{
NSLog(@"find file");
NSData *uploadedData=[NSData dataWithContentsOfFile:realpath];
NSString * uploadedDataBase64= [NSString base64forData:uploadedData];
NSLog(@"base64: %@",uploadedDataBase64);
}
else
{
NSLog(@"not found");
}
filemanager找到该文件,但nsdata返回null,但是它们都有相同的路径
我的文件大小约为60kb
任何想法为什么会发生?我错过了什么吗?
答案 0 :(得分:0)
你在这里写的代码看起来不错, 我建议你选择其他需要NSError实例的方法。
`dataWithContentsOfFile:options:error:`
如果出现问题,您将尝试将该文件内容转换为NSData,那么您仍会得到一些错误说明,错误说明可能会对您有所帮助。
我希望它对你有帮助......欢呼
答案 1 :(得分:0)
尝试使用Matt Gallagher的this伟大的NSData + Base64类别以及下面的代码
NSString *realpath=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent: @"2_program.db"];
if ([[NSFileManager defaultManager] fileExistsAtPath:realpath]){
NSLog(@"find file");
NSData *uploadedData=[NSData dataWithContentsOfFile:realpath];
NSString *uploadedDataBase64=[[[NSString alloc]initWithData:uploadedData encoding:NSUTF8StringEncoding] base64EncodedString];
NSLog(@"base64: %@",uploadedDataBase64);
}
else{
NSLog(@"not found");
}
答案 2 :(得分:-1)
realpath=[[NSString alloc] initWithString:
[docsDir stringByAppendingPathComponent: @"2_program.db"]];
这里你错过了一个/ 将上述陈述改为
realpath = [[NSString alloc] initWithString:
[docsDir stringByAppendingPathComponent: @"/2_program.db"]];