搜索文本文件 - 可可

时间:2009-10-08 21:16:16

标签: objective-c cocoa text-files

如何键入搜索给定目录中的文本文件的代码。我希望搜索词是“password123”,如果它包含,则它将继续进行下一步,如果不是,它将给出错误消息。

3 个答案:

答案 0 :(得分:4)

尝试此功能;

<强> ETA

好吧,我是个白痴,我输入的代码没有先试过。

这很有效。我还有一个simple Xcode project可以使用这个,你可以下载,如果我在这里输入错误的话就自己试试。

    // Get the URL for the Password.txt file on the desktop.
    NSURL *fileURL = [NSURL fileURLWithPath:[@"~/Desktop/Password.txt" stringByExpandingTildeInPath]];

    // Read the contents of the file into a string.
    NSError *error = nil;
    NSString *fileContentsString = [NSString stringWithContentsOfURL:fileURL 
                                                            encoding:NSUTF8StringEncoding 
                                                               error:&error];

    // Make sure that the file has been read, log an error if it hasn't.
    if (!fileContentsString) {
        NSLog(@"Error reading file");
    }

    // Create the string to search for
    NSString *password = @"Password123";

    // Search the file contents for the given string, put the results into an NSRange structure
    NSRange result = [fileContentsString rangeOfString:password];

    // -rangeOfString returns the location of the string NSRange.location or NSNotFound.
    if (result.location == NSNotFound) {
        // Password not found. Bail.
        NSLog(@"Password not found in file");
        return;
    }
    // Continue processing
    NSLog(@"Password found in file");    
}

答案 1 :(得分:3)

要阅读文本文件:

NSString *path = ...;
NSError *error;
NSString *stringFromFileAtPath = [[NSString alloc]
                                      initWithContentsOfFile:path
                                      encoding:NSUTF8StringEncoding
                                      error:&error];
if (stringFromFileAtPath == nil) {
    // an error occurred
    NSLog(@"Error reading file at %@\n%@",
              path, [error localizedFailureReason]);
    // implementation continues ...

取自发现的here的Apple文档。

您可以使用

NSString rangeOfString: 

搜索你的字符串。
更多关于这里: Apple Documentation: Searching Strings

答案 2 :(得分:1)

如果你想坚持Cocoa,那么NSScanner就是你的朋友。

如果您不打扰使用普通的unix api,可以使用:

int match = system("grep -q password123 pathToMyfile");

并检查match是否为0,在这种情况下找到匹配。