我必须使用扩展名为.b的文件。实际上,该文件包含使用Caffe框架从fc7层提取的Deep CNN图像特征。每行包含ASIN(亚马逊标准识别号),后跟4076个可视特征(其中每个特征由十进制数表示)。但是,当我尝试读取此文件时,该文件的输出格式如下: - “B000IG9NS6Œ¹?{^ @Á9c?ÓÞÀ> e¢>Œ¹{?jM”,它继续这样。
请有人告诉我如何通过阅读此类文件获得正确的输出?
答案 0 :(得分: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);
<强>更新强>:
尝试上述解决方案后,OP出现内存不足错误。从@ Marco13对该问题的评论,看起来您的二进制文件大小为600 Mb。这可能是你获得OOME的原因。但是这个错误与你如何在java中读取二进制文件的原始问题声明无关。您可以使用JVM标志Direct Memory
为-XX:MaxDirectMemorySize=<size>
指定更高的内存大小。这里指定大约700 MB的大小是更安全的一面。这将解决您的其他OOME问题。