2016-09-01 3 views
0

Привет, ребята, я застрял в ситуации, когда мне захотелось узнать тип файла из нескольких файлов, у которого нет расширения. До сих пор я знаю, что каждый файл связан с идентификатором и расширением UTI.Как получить тип файла, если расширение файла не доступно

1. В моем случае расширение файла недоступно, поэтому никаких вопросов.

2. Файл не имеет расширения.

Apple documentation over file system over O.S

One of stack overflow reference

Article over dynamic UTI

Я был здесь, но думаю, есть что-то мне не хватает или идти в анонимном направлении.

Ваша помощь должна быть оценена.

+0

В общем случае, если нет расширения, тогда вы должны угадать, какой тип файла. linux использует 'libmagic' для проверки содержимого файла, чтобы попытаться определить тип файла. Также есть команда bsd 'magic' - если вы запустите' file -mime-type * ', он попытается получить тип mime (например, image/png) для всех файлов в текущем каталоге. – Petesh

+0

@Petesh спасибо за ответ ... в этот момент я делаю то же самое, но я думал, получаю ли я возможность получить тип файла любым предопределенным способом. Я могу получить UTI моего файла в «public.data», но это тип изображения, и поэтому он должен дать мне «public.image», чтобы я мог проверить, что это файл типа изображения. поэтому, если у вас есть идеи, если можно получить файл типа файла без расширения точно. –

+0

По умолчанию UTI будет 'public.data', если расширение отсутствует.Я пытаюсь понять, в чем проблема: вы не можете вызвать UTI для файла без какого-либо изучения файла. На самом деле нет ярлыка для этого, если у вас нет расширения, чтобы основывать ваше ожидание. – Petesh

ответ

-1

вы можете попробовать это:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:nil]; 
NSString *fileName = @"YOUR_FILE_NAME"; 
for (NSString *file in directoryContent) 
{ 
    NSString *fileNameWithOutExt= [file stringByDeletingPathExtension]; 
    if([fileName isEqualToString:fileNameWithOutExt]) 
    { 
     NSLog(@"Found"); 
    } 
} 
+0

Я хочу тип содержимого файла pal .. Я не ищу файл идентичный ... Вы можете видеть файлы кеша Safari, у которых нет расширения, и я просто ищу типы этих файлов ... –

0

ИМП разработаны, чтобы позволить прохождение типизированных данных между приложениями, главным образом, например, отправка изображений через буфер обмена. Пока данные помечены соответствующим UTI, он будет доступен для потребителей, которые могут иметь дело с данными такого типа.

Приложение, помещающее данные на картоне, отвечает за определение соответствующих UTI (ов), которые являются placed onto the pasteboard.

Когда вы определяете UTI для файла, операционная система получает это from the extension that is used. Это единственный источник, который использует операционная система для определения UTI при просмотре файла. Если для файла нет расширения, ему предоставляется UTI public.data.

Вместо этого Mac OS X выводит UTI из другой информации, в первую очередь - и tragically - из расширения имени файла.

UTI не сохраняется/кэшируется/сохраняется в любой форме в файловой системе, кроме как в форме расширения файла.

Единственный механизм, который доступен другой, чем с помощью расширения файла заключается в использовании инструмент, как file, или это библиотека libmagic, которая является частью дистрибутива файл программы, чтобы опрашивать файл, чтобы определить его вероятный тип файла.

Смежные вопросы