Java:将多个int数组写入二进制文件以获得反向索引

时间:2017-10-02 22:02:17

标签: java arrays

我目前正在Java中执行一个倒排索引项目,它将int数组写入二进制文件,然后保存偏移量以及每个数组要读取的字节数,以便稍后可以将其读回内存。我怎么能这样做?我以前从未处理过二进制文件,所以我不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

您可以使用DataOutputStream编写原始数据,并使用DataInputStream进行阅读。这可以保证数据不会被写为文本。

这两个类基本上对每个基本类型都有一个重载,例如intfloatchar等,这使得使用它们非常简单。要撰写和阅读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();

请注意,这些示例没有异常处理,如果您希望确保程序在文件不存在或数据损坏的情况下不会崩溃,这一点非常重要。