File file = new File("/path/to/file");
Tika tika = new Tika();
System.out.println(tika.detect(file));
如果您有groovy控制台,只需粘贴并运行以下代码即可:
@Grab('org.apache.tika:tika-core:1.14')
import org.apache.tika.Tika;
def tika = new Tika()
def file = new File("/path/to/file")
println tika.detect(file)
// create a magic utility using the internal magic file
ContentInfoUtil util = new ContentInfoUtil();
// if you want to use a different config file(s), you can load them by hand:
// ContentInfoUtil util = new ContentInfoUtil("/etc/magic");
...
ContentInfo info = util.findMatch("/tmp/upload.tmp");
// or
ContentInfo info = util.findMatch(inputStream);
// or
ContentInfo info = util.findMatch(contentByteArray);
// null if no match
if (info != null) {
String mimeType = info.getMimeType();
}
import java.io.File;
import javax.activation.MimetypesFileTypeMap;
public class MimeTest {
public static void main(String a[]){
System.out.println(new MimetypesFileTypeMap().getContentType(
new File("/path/filename.txt")));
}
}
24条答案
按热度按时间brqmpdu116#
在Java7中,您现在只需使用
Files.probeContentType(path)
.4xy9mtcn17#
apache tika在tika core中提供了一种基于流前缀中的魔术标记的mime类型检测。
tika-core
不获取其他依赖项,这使得它与当前未维护的mime类型检测实用程序一样轻量级。简单代码示例(Java7),使用变量
theInputStream
以及theFileName
```try (InputStream is = theInputStream;
BufferedInputStream bis = new BufferedInputStream(is);) {
AutoDetectParser parser = new AutoDetectParser();
Detector detector = parser.getDetector();
Metadata md = new Metadata();
md.add(Metadata.RESOURCE_NAME_KEY, theFileName);
MediaType mediaType = detector.detect(bis, md);
return mediaType.toString();
}
btqmn9zl18#
对于apache tika,您只需要三行代码:
如果您有groovy控制台,只需粘贴并运行以下代码即可:
记住,它的api是丰富的,它可以解析“任何东西”。从tika core 1.14开始,您有:
有关更多信息,请参阅apidocs。
nszi6y0519#
我找不到要检查的东西
video/mp4
所以我做了自己的解决方案。我碰巧注意到维基百科错了00 00 00 18 66 74 79 70 69 73 6F 6D
文件签名不正确。第四字节(18
)以及所有70
(排除在外)在其他情况下发生了相当多的变化mp4
文件夹。此代码本质上是
URLConnection.guessContentTypeFromStream
代码,但适合video/mp4
.成功测试了10种不同的
.mp4
文件夹。编辑:这里有一个有用的链接(如果它仍然在线的话),你可以在这里找到许多类型的样本。我不拥有这些视频,也不知道谁拥有,但它们对测试上述代码很有用。
monwx1rj20#
我只是想知道大多数人是如何从java文件中获取mime类型的?
我已经发布了我的simplemagicjava包,它允许从文件和字节数组中确定内容类型(mime类型)。它被设计用来读取和运行unix文件(1)命令魔术文件,这些文件是大多数unix操作系统配置的一部分。
我试过apache tika,但它有很多依赖项,
URLConnection
不使用文件的字节MimetypesFileTypeMap
也只看文件名。使用simplemagic,您可以执行以下操作:
rqcrx0a621#
只需一行即可完成:mimetypesfiletypemap().getcontenttype(新文件(“filename.ext”))。查看完整的测试代码(java 7):
此代码生成以下输出:text/plain
h79rfbju22#
这是我找到的最简单的方法:
kuhbmx9i23#
我是用下面的代码做的。
8cdiaqws24#