Java 提高输出到文件的性能
我遵循下面类似的代码。环顾不同的实现,似乎大多数人都通过字节复制来执行相同的操作。有没有一种更快的方法来处理从文件中充气并打印回文件Java 提高输出到文件的性能,java,compression,inflate,Java,Compression,Inflate,我遵循下面类似的代码。环顾不同的实现,似乎大多数人都通过字节复制来执行相同的操作。有没有一种更快的方法来处理从文件中充气并打印回文件 public static String unzipString(InputStream in) { try { int length = (int) in.readUBits( 16 ); // Add extra byte to array when Inflater is set to true byte[] data = in.re
public static String unzipString(InputStream in) {
try {
int length = (int) in.readUBits( 16 );
// Add extra byte to array when Inflater is set to true
byte[] data = in.read( length );
ByteArrayInputStream bin = new ByteArrayInputStream(input);
InflaterInputStream in = new InflaterInputStream(bin);
FileoutputStream bout = new FileoutputStream(this.file);
int b;
while ((b = in.read()) != -1) {
bout.write(b);
}
bout.close();
} catch (IOException io) {
return null;
}
}处理文件时,一次复制一个字节总是非常慢的。我建议您使用8KB的缓冲区
try (FileOutputStream fout = new FileOutputStream(this.file)) {
byte[] bytes = new byte[8192];
for (int len; (len = in.read(bytes)) != -1;)
fout.write(b, 0, len);
}
顺便说一句,为了加快速度,您可以首先避免使用InputStream复制字节[],InputStream封装了字节,但读取的是精确长度的字节。您的代码看起来很笨拙。我不知道它是否会编译。这不是我的代码。这是我从谷歌上得到的一个例子。它类似于上面给出的按字节写入的输出。我的文件很大,似乎每个文件需要2分钟才能写入,其中每个文件的压缩大小为1600KB,未压缩大小为26MB。Outputstream写字节似乎是一个漫长的过程。这段代码非常糟糕。你应该试试另一个例子。我无法改善已经倒塌的房子,这很公平。有没有一种简单的解决方案,可以使用充气来充气已放气的文件,而不需要手动复制字节?我想没有。只要是纯Java,就必须进行字节复制。即使它似乎避免了直接字节复制,但实际上它在您没有注意到的地方使用了它。这方面唯一的改进是使用缓冲区复制多个字节,通常大小为几KB,而不是一次复制一个字节