從文件頭獲取文件類型

支持獲取常見的圖片類型和文件類型

+ (NSString *)getFileTypeWithPath:(NSString *)filePath{
    NSUInteger headerLength = 16; // 頭文件長度,根據(jù)文件類型確定
    NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];
    if (fileHandle != nil) {
        NSData *headerData = [fileHandle readDataOfLength:headerLength]; // 獲取文件頭數(shù)據(jù)
        // 將文件頭數(shù)據(jù)轉(zhuǎn)換為十六進(jìn)制字符串
        NSString *hexString = [headerData description];
        hexString = [hexString stringByReplacingOccurrencesOfString:@" " withString:@""];
        hexString = [hexString stringByReplacingOccurrencesOfString:@"<" withString:@""];
        hexString = [hexString stringByReplacingOccurrencesOfString:@">" withString:@""];
        hexString = [hexString lowercaseString];
        [fileHandle closeFile];
        if ([hexString containsString:@"41564920"]) { // 41 56 49 20 avi
            return @".avi";
        }else if([hexString containsString:@"6d703432"]){ // 6D 70 34 32 mp4
            return @".mp4";
        }else if ([hexString containsString:@"1a45dfa3"]){ // 1A 45 DF A3 mkv
            return @".mkv";
        }else if ([hexString containsString:@"6d6f6f76"]){ // 6D 6F 6F 76 mov
            return @".mov";
        }else if ([hexString containsString:@"464c56"]){ // 46 4C 56 flv
            return @".flv";
        }else if ([hexString containsString:@"0ad7a300"]){ //文件頭標(biāo)識:0A D7 A3 00 文件類型:ASF(30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C)
            return @".wmv";
        }else if ([hexString containsString:@"89504e470d0a1a0a"]) { // 89 50 4E 47 0D 0A 1A 0A 8個(gè)字節(jié)的頭文件
            return @".png";
        }else if([hexString containsString:@"ffd8"]){ // FF D8 jpg/jpeg
            return @".jpg";
        }else if ([hexString containsString:@"474946"]){ // 47 49 46  gif
            return @".gif";
        }else if ([hexString containsString:@"424d"]){ // 47 49 46 38 gif
            return @".bmp";
        }else if ([hexString containsString:@"4949"]||[hexString containsString:@"4d4d"]){ // 49 49 或 4D 4D
            return @".tiff";
        }else if ([hexString containsString:@"57454250"]){ // 52 49 46 46 XX XX XX XX 57 45 42 50 YY YY YY YY ZZ ZZ ZZ ZZ
            return @".webp";
        }else if ([hexString containsString:@"00000100"]){ // 00 00 01 00
            return @".ico";
        }else if ([hexString containsString:@"68656963"]){ //  68 65 69 63
            return @".HEIC";
        }
    } else {
        NSLog(@"無法打開文件");
        return nil;
    }
    return nil;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容