我有一個文件正在上傳(一個* .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