Java/Processing中动态加载任意类型数组保存数据的方法
Method to dynamically load saved data of an array of any type in Java/Processing
有没有办法在 Java 中编写一个方法来加载由我的 "saveClassData"-Method 创建的文件和 return 保存对象类型的数组的?
我已经尝试过不同的想法,但 none 的想法奏效了。
一个问题是,我想返回一个特定对象类型的数组,而不是 "object".
类型的数组
所以我实际上是在寻找可以编写的方法:
ObjectType[] array = loadClassData("classname", "fileLocation.csv");
这是我为将对象数据保存在 csv 文档中而编写的代码:
void saveClassData(String fileLocation, Object[]objects) {
try {
String[] data = new String[objects.length];
Class cls = objects[0].getClass();
Field[] fieldlist = cls.getDeclaredFields();
for (int i = 0; i < objects.length; i++) {
data[i] = "";
for (int t = 0; t < fieldlist.length-1; t++) {
Field fld = fieldlist[t];
data[i] += fld.get(objects[i]) + ",";
}
data[i] = data[i].substring(0, data[i].length()-1);
}
saveStrings(fileLocation, data);
}
catch (Throwable e) {
System.err.println(e);
}
}
听起来您正在寻找序列化。序列化允许您将对象写入文件,然后从该文件中读取它们。
这是一个小例子:
// write data
FileOutputStream fos = new FileOutputStream("YourFile.whatever");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(yourArray);
// read data
FileInputStream fis = new FileInputStream("YourFile.whatever");
ObjectInputStream iis = new ObjectInputStream(fis);
YourObject[] yourArray = (YourObject[]) iis.readObject();
请注意,这些文件并不是人类可读或可编辑的,只有当数据中的每个对象都是可序列化的时,这才有效。
Google "java serialization" 大量结果。
如果序列化对您不起作用,那么您可能无法自己手动写入和读取数据。请注意,您可以轻松地将 class 写入文件并根据保存的数据创建 class 的新实例。
有没有办法在 Java 中编写一个方法来加载由我的 "saveClassData"-Method 创建的文件和 return 保存对象类型的数组的?
我已经尝试过不同的想法,但 none 的想法奏效了。 一个问题是,我想返回一个特定对象类型的数组,而不是 "object".
类型的数组所以我实际上是在寻找可以编写的方法:
ObjectType[] array = loadClassData("classname", "fileLocation.csv");
这是我为将对象数据保存在 csv 文档中而编写的代码:
void saveClassData(String fileLocation, Object[]objects) {
try {
String[] data = new String[objects.length];
Class cls = objects[0].getClass();
Field[] fieldlist = cls.getDeclaredFields();
for (int i = 0; i < objects.length; i++) {
data[i] = "";
for (int t = 0; t < fieldlist.length-1; t++) {
Field fld = fieldlist[t];
data[i] += fld.get(objects[i]) + ",";
}
data[i] = data[i].substring(0, data[i].length()-1);
}
saveStrings(fileLocation, data);
}
catch (Throwable e) {
System.err.println(e);
}
}
听起来您正在寻找序列化。序列化允许您将对象写入文件,然后从该文件中读取它们。
这是一个小例子:
// write data
FileOutputStream fos = new FileOutputStream("YourFile.whatever");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(yourArray);
// read data
FileInputStream fis = new FileInputStream("YourFile.whatever");
ObjectInputStream iis = new ObjectInputStream(fis);
YourObject[] yourArray = (YourObject[]) iis.readObject();
请注意,这些文件并不是人类可读或可编辑的,只有当数据中的每个对象都是可序列化的时,这才有效。
Google "java serialization" 大量结果。
如果序列化对您不起作用,那么您可能无法自己手动写入和读取数据。请注意,您可以轻松地将 class 写入文件并根据保存的数据创建 class 的新实例。