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