Java 如何提高存储和加载文件的性能
我用这个来储存Java 如何提高存储和加载文件的性能,java,android,file-io,fileinputstream,fileoutputstream,Java,Android,File Io,Fileinputstream,Fileoutputstream,我用这个来储存 FileOutputStream savedList = new FileOutputStream(....); GZIPOutputStream gz = new GZIPOutputStream(savedList); ObjectOutputStream oosList = new ObjectOutputStream( gz);
FileOutputStream savedList = new FileOutputStream(....);
GZIPOutputStream gz = new GZIPOutputStream(savedList);
ObjectOutputStream oosList = new ObjectOutputStream(
gz);
oosList.writeObject(input);
oosList.close();
这个要装吗
FileInputStream savedSerializable = new FileInputStream(....);
GZIPInputStream gz = new GZIPInputStream(savedSerializable);
ObjectInputStream oisList = new ObjectInputStream(
gz);
savedList = (Serializable) oisList.readObject();
如何提高存储和加载速度?
BufferedOutputStream
和BufferedOutputStream
能否提高性能?如果是,我应该如何正确地使用和配置这些文件(平均文件大小为6到50mb)?您可以使用Kryo(),它执行序列化的速度要快得多,还可以减少文件大小,从而提高总加载/保存的速度
编辑
下面的代码将提示您如何使用它
Kryo k = new Kryo();
Object[] input = new Object[]{/*...*/};
//make serialization faster using code generation
k.setAsmEnabled(true);
//allow you to serializae objects of classes that does not have a default constructor
k.setInstantiatorStrategy(new StdInstantiatorStrategy());
//you should now register all the clsses types that you intend to use with kryo
k.register(A.class);
k.register(B.class);
//...
//now you can write your objects this way:
try (ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(DATA_STORE_LOCATION));
Output out = new UnsafeOutput(zip)) {
k.writeObject(out, input);
}
//and read it this way
try (ZipInputStream zip = new ZipInputStream(new FileInputStream(DATA_STORE_LOCATION));
Input in = new UnsafeInput(zip)){
Object[] store = k.readObject(in, Object[].class);
}
你能给我一个样品和更多的细节吗?会影响RAM消耗吗?@AndreaF查看我的更新答案,我相信它会减少RAM消耗,因为它读取\写入更少的数据,因此使用更少的内存**注意,我不确定UnsafeInput和UnsafeOutput类是否能在android上工作-库中有不同的选项(FastInput/FastOutput)应该可以工作..我在stdinStatiatorStrategy()上得到错误无法解析符号。此外,在
try(ZipInputStream…
上也得到编译错误。相对于语言,Java 7支持try with resource,只有android API级别19支持