有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从java中的dicom文件获取MIME类型

我尝试了以下所有方法:

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


共 (1) 个答案

  1. # 1 楼答案

    要确定一个文件是否是Dicom,最好的办法是自己解析该文件,并查看它是否在文件偏移量128处包含魔法字节“DICM”

    前128个字节通常为0,但可能包含任何内容