如何在java中打开文件然后调用十六进制编辑器来检查文件类型?

时间:2013-02-06 14:35:39

标签: java hex hex-editors

我们真的坚持这个主题,这是我们将文件转换为十六进制的唯一代码但我们需要打开一个文件,然后让java代码读取十六进制并提取某些字节(例如前4个文件扩展名的字节数:

import java.io.*;
public class FileInHexadecimal
{        
    public static void main(String[] args) throws Exception 
    {                
     FileInputStream fis = new FileInputStream("H://Sample_Word.docx");                
     int i = 0;                
     while ((i = fis.read()) != -1) {                       
        if (i != -1) {                                
        System.out.printf("%02X\n ", i);
     } 
    }  
    fis.close();    
   }
}

1 个答案:

答案 0 :(得分:4)

不要混淆内部和外部表示 - 转换为十六进制时所执行的操作是您只创建相同字节的不同表示。

如果您只想从文件中读取一些字节,则无需转换为十六进制 - 只需读取它们即可。例如,要读取前四个字节,可以使用类似

的内容
byte[] buffer = new byte[4];
FileInputStream fis = new FileInputStream("H://Sample_Word.docx");  
int read = fis.read(buffer);
if (read != buffer.length) {
    System.out.println("Short file!");
}

如果您需要从文件中的任意位置读取数据,您可能需要检查RandomAccessFile而不是使用流。 RandomAccessFile允许设置开始阅读的位置。