Как открыть файл в Java, а затем вызвать шестнадцатеричный редактор, чтобы проверить тип файла?

Мы действительно застряли в этой теме, это единственный код, который у нас есть, который преобразует файл в шестнадцатеричный формат, но нам нужно открыть файл, а затем код 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 ответ

Решение

Не путайте внутреннее и внешнее представление - то, что вы делаете при преобразовании в шестнадцатеричное, это то, что вы создаете только другое представление тех же байтов.

Нет необходимости конвертировать в шестнадцатеричный формат, если вы просто хотите прочитать несколько байтов из файла - просто прочитайте их. Например, чтобы прочитать первые четыре байта, вы можете использовать что-то вроде

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 позволяет установить позицию, с которой начинается чтение.

Другие вопросы по тегам