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支持