0

我在应用程序中有一个按钮,单击该按钮会打开一个对话框。然后用户选择一个文件夹,单击确定,然后应用程序会显示该文件夹中 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];
    }
}
4

1 回答 1

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 循环的变量即可。

于 2013-02-22T06:58:27.523 回答