我尝试了以下所有方法:
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLConnection;
import java.nio.file.Files;
public class mimeDicom {
public static void main(String[] argvs) throws IOException{
String path = "Image003.dcm";
String[] mime = new String[3];
File file = new File(path);
mime[0] = Files.probeContentType(file.toPath());
mime[1] = URLConnection.guessContentTypeFromName(file.getName());
InputStream is = new BufferedInputStream(new FileInputStream(file));
mime[2] = URLConnection.guessContentTypeFromStream(is);
for(String m: mime)
System.out.println("mime: " + m);
}
}
但结果仍然是:mime: null
对于上述每个尝试过的方法,我真的想知道文件是否是DICOM,因为有时它们没有扩展名或者有不同的扩展名。
如何从路径中知道文件是否为DICOM?
注意:这不是How to accurately determine mime data from a file?的重复,因为excellent list of magic numbers不包含DICOM文件,而apache tika提供application/octet-stream
作为返回,但实际上并非如此将其识别为图像并且它没有用,因为NIfTI文件(以及其他文件)从Tika获得完全相同的MIME。
答案 0 :(得分:3)
要确定文件是否为Dicom,最好的办法是自己解析文件,看看它是否包含文件偏移128处的魔术字节“DICM”。
前128个字节通常为0但可能包含任何内容。