Определение двоичного файла/текстового файла вводит в Java?

Может быть, вы хотите получить это (python3):

test.txt:
10 + 15
22 - 71
33 + 64

код:

import operator
op = {'+': operator.add, '-': operator.sub}

with open('test.txt', 'r') as f:
    lines = f.readlines()

for i in lines:
    args = i.split()
    val = op[args[1]](int(args[0]), int(args[-1]))
    r = f'{i.strip()} = {val}'
    print(r)
41
задан Ondra Žižka 23 November 2012 в 16:50
поделиться

7 ответов

Нет никакого гарантируемого пути, но здесь не несколько возможностей:

1) Ищут заголовок на файле. К сожалению, заголовки являются определенными для файла, поэтому в то время как Вы могли бы быть в состоянии узнать, что это - файл RAR, Вы не получите более универсальный ответ того, является ли это текстом или двоичным файлом.

2) считают количество символа по сравнению с нетипами символов. Текстовые файлы будут главным образом алфавитными символами, в то время как двоичные файлы - особенно сжатые как rar, zip и такой - будут иметь тенденцию представлять байты более равномерно.

3) Ищут регулярно повторяющийся шаблон новых строк.

18
ответ дан Aric TenEyck 27 November 2019 в 00:39
поделиться

Если файл состоит из байтов 0x09 (вкладка), 0x0A (перевод строки), 0x0C (перевод формата), 0x0D (возврат каретки) или 0x20 через 0x7E, то это - вероятно, текст ASCII.

, Если файл содержит какой-либо другой управляющий символ ASCII, 0x00 через 0x1F, исключая три выше, то это - вероятно, двоичные данные.

текст UTF-8 следует за очень определенным шаблоном для любых байтов с высокого уровня битом, но кодировка фиксированной длины как ISO-8859-1 не делает. UTF-16 может часто содержать пустой байт (0x00), но только в любом положении.

Вам была бы нужна более слабая эвристика для чего-либо еще.

3
ответ дан Matthew 27 November 2019 в 00:39
поделиться

Только для сообщения я выбрал совершенно другой путь. Я мой случай, существует только 2 типа файлов, возможности, что любой данный файл будет двоичной единицей, высок. Так

  1. предполагают, что файл является двоичным, попытайтесь делать то, что, как предполагается, сделано (например, десериализуйте)
  2. исключение выгоды
  3. файл обработки как текстовый
  4. , если это перестало работать, что-то неправильно с самим файлом
3
ответ дан yanchenko 27 November 2019 в 00:39
поделиться

Вы могли попробовать инструмент DROID .

1
ответ дан Fabian Steeg 27 November 2019 в 00:39
поделиться

Взгляните на библиотеку JMimeMagic.

jMimeMagic является библиотекой Java для определения типа MIME файлов или потоков.

9
ответ дан Daniel Hiller 27 November 2019 в 00:39
поделиться

Запустите файл -bi {имя файла} . Если все, что он возвращает, начинается с «текста /», то это не двоичный код, иначе это так. ; -)

10
ответ дан 27 November 2019 в 00:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: