【发布时间】:2016-01-10 04:45:26
【问题描述】:
我想创建一个包含检查目录文件的二进制文件,例如 one 我尝试使用此代码读取此文件
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ZeroFileDecryptor {
public static void main(String[] args) {
// TODO Auto-generated method stub
String file_name = "0";
try {
FileInputStream fos = new FileInputStream(file_name);
DataInputStream os = new DataInputStream(fos);
System.out.println("os read");
// Header
System.out.println(os.readShort());
System.out.println(os.readInt());
// 0 file size
System.out.println(os.readInt());
// separator
System.out.println(os.readShort());
// 1 folder path - custom description
System.out.println(os.readUTF());
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
它包含标题、文件大小、分隔符(不确定)、包含文件的文件的路径、校验和 crc32(不确定)和循环抛出文件文件名 - 文件扩展名 - 文件名 - 文件校验和crc32(不确定)当使用 os.readUTF() 读取文件名时,我得到了 java.io.UTFDataFormatException。 这是解析这个文件的正确方法吗? 我怎样才能得到缺失值? 如何读取文件名而不出错?
【问题讨论】:
-
看看这个链接是否有帮助:devmanuals.com/tutorials/java/corejava/files/…
-
@ravindra OP 正在尝试解析文件中的数据,而不是简单地将其写入另一个流。
-
@ravindra 谢谢,但链接是将数据原样复制到输出文件中,我想要了解逻辑(通过解析现有文件)并能够生成这样的文件
-
如果您不确定,请找出答案。通过数据文件猜测你的方式会给你带来麻烦,即使在它“似乎工作”的情况下也是如此。然后阅读the methods of DataInput。
readUTF()需要特定的字节序列,您的文件不遵守。 -
@VGR 当我说不确定时,文件结构并不复杂,我不确定 100% 只是 80%。如果我不能使用 readUTF() 你知道另一种正确解析文件的方法吗?谢谢
标签: java file binary ascii extract