나는이 같은있는 NSData 개체로 문서 디렉토리에 내 스스로 만든 디렉토리 내 파일을 얻으려고에 디렉토리에서 파일을 가져 오기 :을 NSData
NSString *path = [documentsDirectory stringByAppendingFormat:@"%@%@",@"/",fileName];
NSError* errorr = nil;
NSData *fileData = [NSData dataWithContentsOfFile:path options: 0 error: &errorr];
if (fileData == nil)
{
NSLog(@"Failed to read file, error %@", errorr);
}
else
{
}
하지만 난 항상이 오류를 얻을 :
Failed to read file, error Error Domain=NSCocoaErrorDomain Code=257 "The operation couldn’t be completed. (Cocoa error 257.)" UserInfo=0x156be110 {NSFilePath=/var/mobile/Applications/679253E3-652C-45EE-B589-609E52E4E3B0/Documents/upload/test.xml, NSUnderlyingError=0x156ba7f0 "The operation couldn’t be completed. Permission denied"}
을 내가 파일을 읽을 수 있는지 확인하는 경우
그래서 :
if ([[NSFileManager defaultManager] isReadableFileAtPath: path] == YES)
NSLog (@"File is readable");
else
NSLog (@"File is read only");
내가 파일을 읽을 수있는 결과를 얻을, 왜 내가 어떻게해야합니까 내가 NSData에 그 파일을 구문 분석하려는 경우 오류가 발생했습니다!
UPDATE :
NSString *filePath = [self dataFilePath:fileName];
[xmlData writeToFile:filePath atomically:YES];
- (NSString *)dataFilePath: (NSString *) path {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"upload"];
NSError *error = nil;
if (![[NSFileManager defaultManager] fileExistsAtPath:documentsDirectory])
[[NSFileManager defaultManager] createDirectoryAtPath:documentsDirectory withIntermediateDirectories:NO attributes:nil error:&error];
NSString *documentsPath = [documentsDirectory
stringByAppendingPathComponent:path];
return documentsPath;
}
UPDATE2 : 파일을 생성 한 후, 나는이 기능을 다른 디렉토리로 이동 :
- (void)moveXmlFilesToUploadDirectory
{
@try {
//Check if FILES_DIR exists
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:FILES_DIR];//filesDir
NSString *uploadDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:UPLOAD_DIR];//filesDir
if ([[NSFileManager defaultManager] fileExistsAtPath:documentsDirectory])
{
NSString *extension = @"xml";
NSArray *contents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:NULL];
NSEnumerator *e = [contents objectEnumerator];
NSString *filename;
while ((filename = [e nextObject])) {
if ([[filename pathExtension] isEqualToString:extension]) {
[[NSFileManager defaultManager] moveItemAtPath:documentsDirectory toPath:[uploadDirectory stringByAppendingPathComponent:filename] error:NULL];
}
}
}
}
@catch (NSException *exception) {
}
@finally {
}
}
은 어쩌면 문제는 이동 이후 나는이 같은 내 파일을 생성 파일! 내가 그것을 이동하기 전에 NSData에 내 파일을 가져 오려고하면 모든 것이 작동합니다 ...
'documentsDirectory' 메소드를 공유 할 수 있습니까? –
그건 방법이 아니야, 그 길 (NSString)이야! 나는 다음과 같이 그것을 만든다 : NSArray * paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString * documentsDirectory = [[paths objectAtIndex : 0] stringByAppendingPathComponent : @ "업로드"]; – davidOhara
'stringByAppendingPathComponent가 아니라 stringByAppendingFormat을 사용하십시오. –