-1

我们真的被困在这个话题上,这是我们唯一将文件转换为十六进制的代码,但我们需要打开一个文件,然后让 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();    
   }
}
4

1 回答 1

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允许设置开始阅读的位置。

于 2013-02-06T14:41:42.560 回答