我目前正在Java中执行一个倒排索引项目,它将int数组写入二进制文件,然后保存偏移量以及每个数组要读取的字节数,以便稍后可以将其读回内存。我怎么能这样做?我以前从未处理过二进制文件,所以我不知道从哪里开始。
答案 0 :(得分:1)
您可以使用DataOutputStream
编写原始数据,并使用DataInputStream
进行阅读。这可以保证数据不会被写为文本。
这两个类基本上对每个基本类型都有一个重载,例如int
,float
,char
等,这使得使用它们非常简单。要撰写和阅读int
,您可以使用方法writeInt()
和readInt()
。
作为一个例子,您可以这样写int[]
:
int[] myArray = ...;
DataOutputStream os = new DataOutputStream(new FileOutputStream("C:\\somefile.dat"));
//write the length first so that you can later know how many ints to read
os.writeInt(myArray.length);
for (int i =0 ; i < myArray.length; ++i){
os.writeInt(myArray[i]);
}
os.close();
并回读:
DataInputStream is = new DataInputStream(new FileInputStream("C:\\somefile.dat"));
int size = is.readInt(); //read the size which is the first int
int[] myArray = new int[size]; //use it to reconstruct the array
for (int i = 0; i < size; ++i){
myArray[i] = is.readInt(); //read all the remaining ints
}
is.close();
请注意,这些示例没有异常处理,如果您希望确保程序在文件不存在或数据损坏的情况下不会崩溃,这一点非常重要。