-3

我在 C# 和 Objective-C 中都有一个应用程序,它必须从文本文件中读取。由于文本文件是在应用程序之后创建的,因此用户可以选择将其保存在任何地方。在 C# 中查找文件并不难,仅使用文件名而不使用完整路径。在 Objective-C 中,这似乎很困难。我不能要求用户将其保存在特定路径,这违反了苹果的应用程序规定。任何想法如何搜索只有文件名的特定文件?在我试用期间,我使用 NSFileManager 来检测文件,如果文件保存在 Applications(Mac) 中,应用程序可以读取文件,但如果我将文件保存在 Documents 或其他任何地方,则会出现错误:'文件不存在'。

4

1 回答 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 回答