我有一个文件正在上传(一个* .wim文件,可以是32位或64位 - WAIK/WADK)。如何使用Java API确定文件是32位还是64位?
wim文件被复制到一个位置。
此前我们只支持32位,但现在为了UEFI的目的,我们需要同时支持32位(用于BIOS)和64位(用于UEFI)。
现在,上传完成后,意图基于文件类型,我将其复制到32位或64位文件夹。
如何辨别它?
P.S:删除了win标签,因为这更多的是文件类型的一般确定而不是WIM。
我有一个文件正在上传(一个* .wim文件,可以是32位或64位 - WAIK/WADK)。如何使用Java API确定文件是32位还是64位?
wim文件被复制到一个位置。
此前我们只支持32位,但现在为了UEFI的目的,我们需要同时支持32位(用于BIOS)和64位(用于UEFI)。
现在,上传完成后,意图基于文件类型,我将其复制到32位或64位文件夹。
如何辨别它?
P.S:删除了win标签,因为这更多的是文件类型的一般确定而不是WIM。
如果我们不顾WIM问题,只是考虑找的架构,为此,一个exe文件(可移植可执行)被编译,这是比较简单的:
与您的情况相关的可能是机器类型0x014c(i386)和0x8664(AMD64)。
有关更多详细信息,可以从Microsoft here获取PE规范。 2.3.1节列出了不同的机器类型。
您可能还有兴趣检查COFF标头的特征字段(最后两个字节)以将该文件标识为可执行文件(而不是例如DLL文件)。
现在,我们来面对WIM问题:-) –
我很确定没有Java库来读取WIM文件。如果Java软件在Windows机器上运行,最简单的方法可能是从Java调用Windows工具将映像挂载到临时目录,通常使用java.io.File访问内容,然后卸载映像。 – jarnbjo
不知道这些文件到底是什么:如果大小可以被4整除而不是8,那么它是一个32位文件。也许它有帮助。 – Burkhard
这绝对取决于文件类型。 –
@Burkhard - 但这只适用于一种情况 - 如果文件可以被4和8整除(如果只有一个64位条目的文件就可以),该怎么办? – nickb