2011-05-25 133 views
5

即使沒有文件擴展名,有沒有辦法找出文件UTI(統一類型標識符)?當文件沒有擴展名時如何獲取文件UTI?

現在,我得到它像這樣,當文件具有擴展名:

CFStringRef fileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)[file pathExtension], NULL); 

我發現在網絡上,目的是做到這一點的Mac上這個片段。但我在iOS:

CFStringRef typeString = UTCreateStringForOSType(outInfo.filetype); 
itemUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, typeString, NULL); 
CFRelease(typeString); 

注意:outInfo是類型LSItemInfoRecord,它在iOS中不存在。

+0

是否指的是沒有文件擴展名,但具有HFS +文件類型代碼集的文件?例如,一個純文本文件的文件名是「Document」,文件類型是「TEXT」?或者沒有文件類型和文件擴展名的文件? – NSGod 2011-05-26 00:40:46

+0

用戶創建的文件(例如文本文件),然後刪除擴展名「.txt」,使其看起來像「myDocument」而不是「myDocument.txt」 – dontWatchMyProfile 2011-05-26 09:54:30

回答

1

識別沒有擴展名但沒有其他元數據的文件的唯一方法是查看其內容並根據該文件識別文件。

如果它是一個圖像文件,那麼它通常以一些標識爲JPEG,PNG等的魔術字符串開頭。您也可以嘗試將其作爲圖像打開並查看它是否有效。

儘管對於文本文件來說,該方法不會工作,因爲文本文件可以包含任何內容。如果您對文件中的文本有一些瞭解,則可以將其作爲字符串打開,然後搜索該文本的字符串。如果沒有,你可以從字典中查找單詞,然後假設它包含合理數量的字典單詞就是文本。

如果沒有擴展名,請求用戶識別文件類型可能會更好 - 它更簡單,更可靠。

相關問題