我有一个
java.io.File
类,其中包含资源链接。我想检查这个文件是否是一个Java类。
可以检查文件扩展名...但是这种方法不适合我,因为任何人都可以创建具有 .class 扩展名的文件,但逻辑上该文件本身不会是 Java 类。
所有 Java 文件都以神奇数字 0xCAFEBABE 开头,所以这应该可以解决问题
InputStream is = new FileInputStream(outFile);
byte[] magicNumber = new byte[4];
is.read(magicNumber);
is.close();
Arrays.equals(new byte[]{(byte) 0xca, (byte) 0xfe, (byte) 0xba, (byte) 0xbe}, magicNumber);