在java中读取文件头

在java中读取文件头,java,file-type,Java,File Type,有人知道如何使用“幻数”或ascii值读取java文件的头,以获取文件扩展名的名称吗?可能不是您想要的答案,但由于您提供的信息很少 在unixoid系统(Linux、Mac、*BSD)中,您可以使用以下命令: 测试每个参数,试图对其进行分类。有三组测试,按此顺序执行:文件系统测试、魔术测试和语言测试。成功的第一个测试将导致打印文件类型 例如 通过使用,您可以调用该程序并解析其输出 编辑1: 要确定给定文件是否为文件,请执行以下操作: 但是你的评论听起来像是你必须自己实现这个方法,而不是使用外部程

有人知道如何使用“幻数”或ascii值读取java文件的头,以获取文件扩展名的名称吗?

可能不是您想要的答案,但由于您提供的信息很少

在unixoid系统(Linux、Mac、*BSD)中,您可以使用以下命令:

测试每个参数,试图对其进行分类。有三组测试,按此顺序执行:文件系统测试、魔术测试和语言测试。成功的第一个测试将导致打印文件类型

例如

通过使用,您可以调用该程序并解析其输出

编辑1: 要确定给定文件是否为文件,请执行以下操作:

但是你的评论听起来像是你必须自己实现这个方法,而不是使用外部程序(?)

你可以试试。这里有一个例子

import java.io.*;
import javax.swing.*;

class GetFileType {
  public static void main(String[] args){
    JFileChooser chooser = new JFileChooser();
    File file = new File("Hello.txt");

    String fileTypeName = chooser.getTypeDescription(file);
    System.out.println("File Type= "+fileTypeName);
  }
}

这将输出文本文档。如果传递的是MP3文件,则输出将是MP3格式的声音。

您是说“文件头”是指文件名吗?他指的是前几个字节,特别是在图像或媒体文件中。从技术上讲,你可能认为它是一个“页眉”。从他之前的问题判断,他似乎不明白“扩展名”是文件名的一部分。@BrianRoach我是个女孩……没错,我应该通过读取头几个字节来识别文件类型。我不太明白,所以所有的帮助appreciated@talnicolas我应该通过读取文件头来识别文件的前几个字节,以便了解该文件extension@sue尹,你所描述的问题的一般解决方案一点也不简单。你有一些特定的文件类型要区分吗?我不明白键入的是什么。我不认为那是我要找的代码。。我认为这是一个更简单的塔恩…至少我希望…谢谢你,我添加了一个例子,确定一个给定的文件是否是一个。但是,如果您想支持多种文件类型,则需要测试许多magics。感谢您的帮助,我尝试了这项工作:)
import java.io.*;

public class IsPng {

    public static void main(String ...filenames) throws Exception {
        if(filenames.length == 0) {
            System.err.println("Please supply filenames.");
            return;
        }

        for(String filename : filenames) {
            if(isPng(new File(filename))) {
                System.out.println(filename + " is a png.");
            } else {
                System.out.println(filename + " is _not_ a png.");
            }
        }
    }

    private static final int MAGIC[] = new int[] { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a };

    private static boolean isPng(File filename) throws Exception {
        FileInputStream ins = new FileInputStream(filename);
        try {
            for(int i = 0; i < MAGIC.length; ++i) {
                if(ins.read() != MAGIC[i]) {
                    return false;
                }
            }
            return true;
        } finally {
            ins.close();
        }
    }

}
new File(name).toURI().toURL().openConnection().getContentType()
import java.io.*;
import javax.swing.*;

class GetFileType {
  public static void main(String[] args){
    JFileChooser chooser = new JFileChooser();
    File file = new File("Hello.txt");

    String fileTypeName = chooser.getTypeDescription(file);
    System.out.println("File Type= "+fileTypeName);
  }
}