我在C#和Objective-C都有一个应用程序,它必须从文本文件中读取。由于文本文件是在App之后创建的,因此用户可以选择将其保存在任何位置。在C#中,找到文件并不困难,只使用完整路径的文件名。在Objective-C中,这似乎很难。我不能要求用户将其保存在特定路径中,这违反了Apple的App规则。任何想法如何只用文件名搜索特定的文件?在我的试用期间,我使用NSFileManager来检测文件,如果文件保存在应用程序(Mac)中,应用程序可以读取文件,但是如果我将文件保存在Documents或其他任何地方,请给我错误:'文件不存在”。
答案 0 :(得分:0)
您可以将txt文件保存在app文件夹中。您可以创建目录。
以下是在Documents目录中创建目录的一些代码。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSFileManager *flmngr = [NSFileManager defaultManager];
BOOL isDir;
if (![flmngr fileExistsAtPath:[NSString stringWithFormat:@"%@/yourDicretoryName", documentsDirectory] isDirectory:&isDir]) {
[flmngr createDirectoryAtPath:[NSString stringWithFormat:@"%@/yourDicretoryName", documentsDirectory]
withIntermediateDirectories:NO
attributes:nil
error:nil];
}
创建特定目录后。您可以保存您的txt文件。假设你有一个nsstring
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/txtFile.txt",documentsDirectory];
[yourString writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
保存txt文件后,您可以这样阅读。
NSString *stringTxt = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
您可以使用代码
获取目录中的文件列表NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSError *error;
NSMutableArray *fileList = [[NSMutableArray alloc]initWithArray:[[NSFileManager defaultManager] contentsOfDirectoryAtPath:[NSString stringWithFormat:@"%@/yourDirectory", documentsDirectory] error:&error]];
-contentsOfDirectoryAtPath
返回NSArray对象。使用目录中的文件名。
适用于Cocoa Thouch Mac应用程序。
您可以使用代码创建目录:
NSFileManager *fileManager= [NSFileManager defaultManager];
if(![fileManager fileExistsAtPath:directory isDirectory:&isDir])
if(![fileManager createDirectoryAtPath:directory withIntermediateDirectories:YES attributes:nil error:NULL])
NSLog(@"Error: Create folder failed %@", directory);
您可以使用代码选择目录:
NSOpenPanel* panel = [NSOpenPanel openPanel];
[panel setCanSelectHiddenExtension:NO];
[panel setCanChooseDirectories:YES];
[panel setCanChooseFiles:NO];
[panel setTitle:@"Kaydetmek için Dosya Yolunu Seçin!"];
[panel beginWithCompletionHandler:^(NSInteger result){
if (result == NSFileHandlingPanelOKButton) {
directoryPath = [[[panel URLs] objectAtIndex:0]path];
directoryPath = [directoryPath stringByReplacingOccurrencesOfString:@"file://localhost" withString:@""];
}
}];
写文件仍然相同。但您可以将您的文档桌面保存在选定或创建的目录等中。
获取文件列表是一样的。