我在 C# 和 Objective-C 中都有一个应用程序,它必须从文本文件中读取。由于文本文件是在应用程序之后创建的,因此用户可以选择将其保存在任何地方。在 C# 中查找文件并不难,仅使用文件名而不使用完整路径。在 Objective-C 中,这似乎很困难。我不能要求用户将其保存在特定路径,这违反了苹果的应用程序规定。任何想法如何搜索只有文件名的特定文件?在我试用期间,我使用 NSFileManager 来检测文件,如果文件保存在 Applications(Mac) 中,应用程序可以读取文件,但如果我将文件保存在 Documents 或其他任何地方,则会出现错误:'文件不存在'。
问问题
244 次
1 回答
0
您可以将 txt 文件保存在您的应用文件夹中。您可以创建目录。
这是在 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:@""];
}
}];
写文件还是一样的。但是您可以将您的文档桌面保存在选定或创建的目录等中。
获取文件列表是相同的。
于 2013-10-08T11:53:49.127 回答