2017-02-15 27 views
-2

Мне нужно использовать файл с расширением .b. На самом деле этот файл содержит функции Deep CNN, извлеченные из слоя fc7, используя Caffe framework. Каждая строка состоит из ASIN (стандартный идентификационный номер Amazon), а затем 4076 визуальных функций (где каждая функция представлена ​​десятичным числом). Но, когда я пытаюсь прочитать этот файл, вывод файла имеет следующий вид: - «B000IG9NS6Œ¹? {^ @ Á9c? ÓÞÀ> e ¢> Œ¹ {? JM", и он продолжается следующим образом.Как читать файлы с расширением .b в java?

Может кто-нибудь из вас, пожалуйста, дайте мне знать, как я могу получить правильный результат, читая этот файл?

+3

Вы читаете его байты, на самом деле я думаю, что java не заботится о расширении файла, так как все файлы являются просто байтами, вы должны использовать правильное декодирование для чтения нужного файла так, как вы хотите –

+0

@DmytroGrynets Я собирался что-то написать например: «Переименуйте его с расширением' .foo'. Чтение файла с расширением '.foo' является тривиальным». Но более серьезно: вы правы. Нужно знать формат. (Вопросы звучат немного так, как будто искатель пытается прочитать файл с помощью некоторого 'Reader', который декодирует данные в' String', но это еще не ясно) – Marco13

+0

@ Marco13 и DmytroGrunets благодарим за письмо! Я все еще не могу получить правильный результат. Это ссылка на файл: [link] (https://drive.google.com/open?id=0B7NS7h2Y8UesM0VBdnVoUEFQYnc) – Leo

ответ

0

Независимо от того, является ли это двоичный или текстовый файл и что расширение файла имеет, вы можете прочитать файл байт следующим образом:

import java.nio.file.Files; 
import java.nio.file.Paths; 
import java.nio.file.Path; 

Path path = Paths.get("path/to/file/file.b"); 
byte[] data = Files.readAllBytes(path); 

Update:

OP получает Out Of Memory Ошибка после попытки решения выше. Из комментария @ Marco13 к вопросу, похоже, ваш бинарный файл имеет размер 600 МБ. Вероятно, это причина, по которой вы получаете OOME. Но эта ошибка не имеет ничего общего с вашей первоначальной постановкой задачи о том, как читать двоичный файл в java. Вы можете указать более высокий размер памяти для Direct Memory, используя флаг JVM -XX:MaxDirectMemorySize=<size>. Здесь укажите размер около 700 МБ для более безопасной стороны. Это решит вашу другую проблему OOME.

+0

спасибо за письмо! он тоже не работал, используя этот подход. Это ссылка на файл: [link] (https://drive.google.com/open?id=0B7NS7h2Y8UesM0VBdnVoUEFQYnc). Если у вас есть время, сообщите мне, если вы сможете увидеть удобный выход. Лучший! – Leo

+0

@Leo, из соображений безопасности я не могу скачать этот файл. Но можете ли вы рассказать нам, что не работает с моим предлагаемым решением. Я попробовал его локально с другим двоичным файлом (PDF-файл). он работает отлично. Вы получаете какую-либо ошибку? – VHS

+0

Я получаю следующее: Исключение в потоке «main» java.lang.OutOfMemoryError: Java heap space ... – Leo

 Смежные вопросы

  • Нет связанных вопросов^_^