查找文件夹中的PDF数量

时间:2013-02-21 17:57:29

标签: macos cocoa foundation

我在应用中有一个按钮,单击该按钮会导致打开一个对话框。然后,用户选择一个文件夹,单击“确定”,然后该应用程序将显示该文件夹中的PDF文件数。

我在下面实现了以下代码。如何扫描文件夹中的PDF文件数量?

- (IBAction)selectPathButton:(NSButton *)sender {

    // Loop counter.
    int i;

    // Create a File Open Dialog class.
    NSOpenPanel* openDlg = [NSOpenPanel openPanel];

    // Set array of file types
    NSArray *fileTypesArray;
    fileTypesArray = [NSArray arrayWithObjects:@"pdf", nil];

    // Enable options in the dialog.
    [openDlg setCanChooseFiles:YES];
    [openDlg setAllowedFileTypes:fileTypesArray];
    [openDlg setAllowsMultipleSelection:TRUE];

    // Display the dialog box.  If the OK pressed,
    // process the files.
    if ( [openDlg runModal] == NSOKButton ) {

        // Gets list of all files selected
        NSArray *files = [openDlg URLs];

        // Loop through the files and process them.
        for( i = 0; i < [files count]; i++ ) {            
        }

        NSInteger payCount = [files count];
        self.payStubCountLabel.stringValue = [NSString stringWithFormat:@"%ld", (long)payCount];
    }
}

1 个答案:

答案 0 :(得分:1)

获取路径

下的文件和目录
[NSFileManager]- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error;

获取路径和子路径下的文件和目录

[NSFileManager]- (NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error;

然后过滤掉pdf文件。

NSMutableArray *pdfFiles = [NSMutableArray array];
for(NSString *fileName in files) {
    NSString *fileExt = [fileName pathExtension];
    if([fileExt compare:@"pdf" options:NSCaseInsensitiveSearch] == NSOrderSame) {
        [pdfFiles addObject:fileName];
    }
}

现在你想要的是pdfFiles。

NSUInteger pdfFilesCount = [pdfFiles count];

如果您只想要计算pdf文件,只需使用带forin循环的变量。