아래와 같은 방법을 통해 file의 mime type을 알 수 있다.
Files.probeContentType(path)
class ProbeTest {
@Test
public void whenUsingJava7_thenSuccess() {
Path path = new File("product.png").toPath();
String mimeType = Files.probeContentType(path);
assertEquals(mimeType, "image/png");
}
}
getContentType()
class UrlConnectionTest {
@Test
public void whenUsingGetContentType_thenSuccess() {
File file = new File("product.png");
URLConnection connection = file.toURL().openConnection();
String mimeType = connection.getContentType();
assertEquals(mimeType, "image/png");
}
}
guessContentTypeFromName()
class UrlConnectionTest2{
@Test
public void whenUsingGuessContentTypeFromName_thenSuccess(){
File file = new File("product.png");
String mimeType = URLConnection.guessContentTypeFromName(file.getName());
assertEquals(mimeType, "image/png");
}
getFileNameMap()
URLConnection
을 활용해서 Mime Type을 찾는 방식 중 빠른 방식class UrlConnectionTest2{
@Test
public void whenUsingGetFileNameMap_thenSuccess(){
File file = new File("product.png");
FileNameMap fileNameMap = URLConnection.getFileNameMap();
String mimeType = fileNameMap.getContentTypeFor(file.getName());
assertEquals(mimeType, "image/png");
}
}
JRE_HOME/lib
의 content-types.properties
를 활용하는데, type이 다소 제한된다는 점이 있다.content.types.user.table property
를 활용하여 사용자 테이블을 설정할 수 있다.System.setProperty("content.types.user.table","<path-to-file>");
mime.types
파일을 찾아 타입을 알아내는 방식으로, 파일을 찾을 수 없으면 application/octet-stream
을 반환한다.mime.types
파일을 찾는 방식은 다음과 같다.class UrlConnectionTest2{
@Test
public void whenUsingMimeTypesFileTypeMap_thenSuccess() {
File file = new File("product.png");
MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap();
String mimeType = fileTypeMap.getContentType(file.getName());
assertEquals(mimeType, "image/png");
}
}
net.sf.jmimemagic:jmimemagic
class JMimeMagicTest{
@Test
public void whenUsingJmimeMagic_thenSuccess() {
File file = new File("product.png");
Magic magic = new Magic();
MagicMatch match = magic.getMagicMatch(file, false);
assertEquals(match.getMimeType(), "image/png");
}
}
org.apache.tika:tika-core
tika-core
적용class TikaTest{
@Test
public void whenUsingTika_thenSuccess() {
File file = new File("product.png");
Tika tika = new Tika();
String mimeType = tika.detect(file);
assertEquals(mimeType, "image/png");
}
}