Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 幻数文件检查_Java_Cross Platform_Magic Numbers - Fatal编程技术网

Java 幻数文件检查

Java 幻数文件检查,java,cross-platform,magic-numbers,Java,Cross Platform,Magic Numbers,我正在尝试读取幻数/字节以检查文件的格式。在Linux机器上,逐字节读取文件的工作方式是否相同 编辑:下面显示如何使用int从类文件中获取魔法字节。我正在尝试对可变的字节数执行相同的操作 我不确定我是否理解您试图做的事情,但听起来您试图做的事情与您链接到的代码所做的事情不同 java类格式被指定为以一个幻数开头,因此代码只能用于验证文件是否为java类。不能使用相同的逻辑将其应用于任意文件格式 编辑:。。还是只想检查wav文件 Edit2:Java中的所有内容都是大端的,这意味着您可以使用Dat

我正在尝试读取幻数/字节以检查文件的格式。在Linux机器上,逐字节读取文件的工作方式是否相同

编辑:下面显示如何使用int从类文件中获取魔法字节。我正在尝试对可变的字节数执行相同的操作


我不确定我是否理解您试图做的事情,但听起来您试图做的事情与您链接到的代码所做的事情不同

java类格式被指定为以一个幻数开头,因此代码只能用于验证文件是否为java类。不能使用相同的逻辑将其应用于任意文件格式

编辑:。。还是只想检查wav文件


Edit2:Java中的所有内容都是大端的,这意味着您可以使用DataInputStream.readInt从文件中读取前四个字节,然后将返回的int与0x52494646(RIFF作为大端整数)进行比较。

链接中的
checkClassVersion
方法仅限于检查Java类文件。通过读取字节并转换/检查十六进制/ASCII值,可以以类似的方式检查其他文件格式(我前一段时间设法做到了这一点,但在HDD出现故障时丢失了源代码)。下面的这一页列出了可能的文件签名列表,因为它们被称为。恩迪亚nnesshttp://www.garykessler.net/library/file_sigs.htmlYes,但这意味着文件必须以魔法字节开头,否则所有文件格式都会这样做。我意识到这一点,并打算在将来为另一个项目提供更灵活的方法。同时,我想检查的所有文件格式(wav、mp3、flv…)在文件的开头都有它们的神奇字节。如果处理器或虚拟机使用不同的字节顺序,Endianness将成为一个问题。请参阅我的第二次编辑和DataInputStream。Endianness是用Java指定的,不应该是特定于平台的。另一个选项是使用ByteBuffer和ByteOrder。如果你想要的话,你可以指定小印第安人。您也可以使用这些类进行转换。这些问题可能会帮助您: