我试图使用[string pathExtension]
来获取文件扩展名,但这并不总是返回文件扩展名本身。例如:我有一个名为'Example.png'的文件,当我使用这个方法时,我得到'png',这是正确的。现在让我们说我有一个没有扩展名的文件,比如'Example',我得到了nil
这仍然是正确的。当我有像'Example.109'这样的文件时会发生什么?我得到'109'作为不正确的扩展名。恰巧'.109'是文件名本身的一部分。有没有办法验证这一点?检查文件扩展名是否有效
1
A
回答
3
我把你的有效文件扩展名的含义是一个文件扩展名,在系统上有一个应用程序声明/声明扩展名。
你可以很容易地确定,通过使用下面的代码:
NSString *pathExtension = [@"Example.109" pathExtension];
NSLog(@"pathExtension == %@", pathExtension);
CFStringRef utiType = UTTypeCreatePreferredIdentifierForTag(
kUTTagClassFilenameExtension, (__bridge CFStringRef)pathExtension, NULL);
NSLog(@"utiType == %@", utiType);
CFDictionaryRef declaration = UTTypeCopyDeclaration(utiType);
NSLog(@"declaration == %@", declaration); // will likely print (null)
CFStringRef jpgUTIType = UTTypeCreatePreferredIdentifierForTag(
kUTTagClassFilenameExtension, CFSTR("jpg"), NULL);
NSLog(@"jpg's UTI Type == %@", jpgUTIType);
CFDictionaryRef knownDeclaration = UTTypeCopyDeclaration(jpgUTIType);
NSLog(@"knownDeclaration == %@", knownDeclaration);
if (utiType) CFRelease(utiType);
if (knownFilenameExtensionsUTIType) CFRelease(knownFilenameExtensionsUTIType);
if (declaration) CFRelease(declaration);
if (knownDeclaration) CFRelease(knownDeclaration);
这可能会以下内容打印到控制台:
pathExtension == 109
utiType == dyn.age8xcqb3
declaration == (null)
jpg's UTI Type == public.jpeg
knownDeclaration == {
UTTypeConformsTo = "public.image";
UTTypeDescription = "JPEG image";
UTTypeIdentifier = "public.jpeg";
UTTypeTagSpecification = {
"com.apple.ostype" = JPEG;
"public.filename-extension" = (
jpeg,
jpg,
jpe
);
"public.mime-type" = (
"image/jpeg",
"image/jpg"
);
};
}
你可以从打印效果看,调用UTTypeCopyDeclaration()
对于与.109
文件扩展名关联的UTI类型返回NULL
,这意味着没有声明文件扩展名的应用程序。将其与使用与.jpg
文件扩展名关联的UTI类型的UTTypeCopyDeclaration()
调用返回的结果进行比较。在那里,调用返回一个包含信息的有效字典,因为有一个应用程序(或系统本身)声明了文件扩展名。
相关问题
- 1. 检查有效的文件扩展名
- 2. 检查建议的文件扩展名是否在系统上有效/注册的文件扩展名
- 3. 检查没有扩展名的文件名是否存在
- 4. 检查文件名是否有效
- 5. 检查文件(可能有多个扩展名)是否存在?
- 6. 如何检查文件是否存在文件扩展名? C#
- 7. Android - 检查文件扩展名是.mp4
- 8. 检查用MaskedEditExtender扩展的文本框的值是否有效?
- 9. 找出文件是否有扩展名
- 10. 检查argv是否包含特定的文件扩展名
- 11. 检查远程URL是否有有效的图像扩展
- 12. php检查文件扩展名为
- 13. 用PHP检查文件扩展名
- 14. ssh.net检查文件扩展名
- 15. 检查文件扩展名在android中
- 16. 文件扩展名的多重检查
- 17. 在Formview中检查文件扩展名
- 18. 检查的文件扩展名
- 19. PHP检查文件扩展名
- 20. python argparse文件扩展名检查
- 21. 检查文件名是否有效窗口名称
- 22. 无论文件在Windows XP上的PHP文件扩展名是否存在,是否可以检查文件名?
- 23. 检查Localizable.strings文件是否有效
- 24. 检查一个数组元素(文件)是否具有特定的扩展名
- 25. 检查目录中是否存在具有给定扩展名的文件
- 26. 检查一个目录是否包含具有给定扩展名的文件
- 27. 检查文件扩展名为'.ini'的文件是否存在,shell
- 28. 是否有效文件名
- 29. 如何检查文件扩展名是大写还是小写?
- 30. mod_rewrite文件检查扩展
那它取决于你的意思是有效的?文件名格式不是由扩展名决定的,而是由文件本身的格式决定的,如果你告诉更多关于它们是什么文件的信息,我们可以帮助你知道如何验证文件 –
在我的情况下,文件根本不重要。我只关心得到适当的延伸。所以一个有效的扩展将是不正确的派生出来的,就像在这个案例中那样。 – Shwethascar
109是一个有效的扩展名,但它只对你无效。您需要手动验证它。 – Merlevede