gpt4 book ai didi

java - 序列化包含数组和 int 的对象

转载 作者:搜寻专家 更新时间:2023-11-01 03:46:57 25 4
gpt4 key购买 nike

所以我一直在尝试实现一种将我的一些对象保存在文件中的方法,这样我就可以减少每次运行时填充变量的需要,这可能需要 20 分钟以上的时间。我目前正在使用一个名为 Raster 的对象,它可以使用用于将数据拉入字段的类型文件来填充。我想知道如何序列化以下内容。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Serializable;

public class Raster implements Serializable {

private static final long serialVersionUID = 15L;
private int col,row,NODATA;
private double [] [] Ras;
public Raster (File inData) throws IOException
{
//open file as f
BufferedReader f = new BufferedReader(new FileReader(inData));
this.col = Integer.parseInt(f.readLine().substring(5).trim());
this.row = Integer.parseInt(f.readLine().substring(5).trim());
f.readLine();
f.readLine();
f.readLine();
this.NODATA = Integer.parseInt(f.readLine().substring(12).trim());
//now the data will be added
this.Ras = new double [row] [col];
for (int r = 0 ; r <row;r ++ )
{
String[] vals = f.readLine().split(" ");
for (int c = 0 ; c < col; c ++ )
this.Ras[r][c]= Double.parseDouble(vals[c]);
}
f.close();
}
public int getRows() {
return row;
}
public int getCols() {
return col;
}
public double getData(int rowPos, int colPos) {
return Ras[rowPos][colPos];
}
}

我看过其他一些示例,但它们似乎都非常特定于其他类型的数据,而不是对象内部的数组,所以我希望有人能够解释一种我可以序列化的方式这个。

附言我已经编辑了代码以更好地解释我的问题,因为它看起来不够清楚。使用序列化此类时,会出现如下错误:

Exception in thread "main" java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)

当我运行我的代码时,它看起来像这样

if (rasPath.exists()) {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(rasPath));
Raster SqrRas = (Raster) (in).readObject();
in.close();
}
else {
Raster SqrRas = new Raster (fullPath);
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(rasPath));
out.writeObject(SqrRas);
out.close();
}

最佳答案

您正在尝试从一个空文件反序列化。

关于java - 序列化包含数组和 int 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46710644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com