所以,我需要在目錄中搜索Unix Executable files
。我遍歷目錄和我正在搜索的文件的路徑。我試過的一些方法。如何以編程方式在OS X中搜索unix可執行文件?
1.當文件擴展名
Unix Executable file
沒有文件擴展名的幫助,但有些文件的文件也沒有擴展名。所以,它失敗了。
2.用的NSFileManager
NSDicitionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
的幫助,它不具有任何獨特屬性找到Unix的可執行文件。
3. MDItemRef的幫助
它具有屬性稱爲kMDItemContentType
但它給一些只unix executable files
的正確結果。
MDItemRef inspectedRef;
CFArrayRef inspectedRefAttributeNames;
CFDictionaryRef inspectedRefAttributeValues;
inspectedRef = MDItemCreate(kCFAllocatorDefault,(CFStringRef)filePath);
if(inspectedRef) {
inspectedRefAttributeNames = MDItemCopyAttributeNames(inspectedRef);
inspectedRefAttributeValues = MDItemCopyAttributes(inspectedRef,inspectedRefAttributeNames);
NSDictionary *attribDict = (__bridge NSDictionary*)inspectedRefAttributeValues;
if([[attribDict objectForKey:@"kMDItemContentType"] isEqualToString:@"public.unix-executable"])
NSLog(@"Unix Executable file");
}
4.用unix命令的幫助 「文件」
NSTask *unixTask = [[NSTask alloc] init];
[unixTask setStandardOutput:newPipe];
[unixTask setLaunchPath:@"/usr/bin/file"];
[unixTask setArguments:[NSArray arrayWithObject:filePath]];
[unixTask launch];
[unixTask waitUntilExit];
[unixTask terminationStatus];
while ((inData = [readHandle availableData]) && [inData length]) {
returnValue= [[NSString alloc] initWithData:inData encoding:[NSString defaultCStringEncoding]];
returnValue = [returnValue substringToIndex:[returnValue length]-1];
NSLog(@"%@",returnValue);
}
這裏,從returnValue
我能找到它是否是UNIX可執行與否。但過程非常緩慢。所以,我的問題是如何以有效的方式搜索unix可執行文件?
感謝您的回答。對於文檔類型文件也顯示爲Unix可執行文件:( – Aravindhan 2012-08-10 08:32:59
我不知道你以前的評論意味着什麼。你的意思是NSURLTypeIdentifierKey屬性是「public.unix-executable」,但查找器列出文件爲「文件「?這聽起來很奇怪。 – 2012-08-10 09:32:14
雅..我不是爲什麼它顯示文件文件爲unix可執行文件。 – Aravindhan 2012-08-10 09:40:20