Add more algorithms and ignore flush exceptions
This commit is contained in:
parent
79becd205e
commit
590f5f7d11
7
pom.xml
7
pom.xml
@ -82,6 +82,13 @@
|
|||||||
|
|
||||||
<!-- ######## Compressors ######## -->
|
<!-- ######## Compressors ######## -->
|
||||||
|
|
||||||
|
<!-- Apache compressor collection -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-compress</artifactId>
|
||||||
|
<version>1.13</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- XZ -->
|
<!-- XZ -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.tukaani</groupId>
|
<groupId>org.tukaani</groupId>
|
||||||
|
@ -38,7 +38,10 @@ public abstract class AbstractAlgorithm {
|
|||||||
try(OutputStream out = createCompressor(outputStream)) {
|
try(OutputStream out = createCompressor(outputStream)) {
|
||||||
byte[] buf = new byte[8192];
|
byte[] buf = new byte[8192];
|
||||||
int s; while ((s = inputStream.read(buf)) != -1) out.write(buf, 0, s);
|
int s; while ((s = inputStream.read(buf)) != -1) out.write(buf, 0, s);
|
||||||
out.flush();
|
try {
|
||||||
|
outputStream.flush();
|
||||||
|
}
|
||||||
|
catch (Throwable ignored) {} // Some compressors may not support flushing, like LZMA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +49,10 @@ public abstract class AbstractAlgorithm {
|
|||||||
try(InputStream is = createDecompressor(inputStream)) {
|
try(InputStream is = createDecompressor(inputStream)) {
|
||||||
byte[] buf = new byte[8192];
|
byte[] buf = new byte[8192];
|
||||||
int s; while ((s = is.read(buf)) != -1) outputStream.write(buf, 0, s);
|
int s; while ((s = is.read(buf)) != -1) outputStream.write(buf, 0, s);
|
||||||
outputStream.flush();
|
try {
|
||||||
|
outputStream.flush();
|
||||||
|
}
|
||||||
|
catch (Throwable ignored) {} // Some compressors may not support flushing, like LZMA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
package eu.mikroskeem.uurimustoo.algoritmidetest.algoritmid;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
|
||||||
|
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mark Vainomaa
|
||||||
|
*/
|
||||||
|
public class BZip2 extends AbstractAlgorithm {
|
||||||
|
@Getter private final String name = "BZip2";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OutputStream createCompressor(OutputStream outputStream) throws IOException {
|
||||||
|
return new BZip2CompressorOutputStream(outputStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InputStream createDecompressor(InputStream inputStream) throws IOException {
|
||||||
|
return new BZip2CompressorInputStream(inputStream);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package eu.mikroskeem.uurimustoo.algoritmidetest.algoritmid;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.apache.commons.compress.compressors.lzma.LZMACompressorInputStream;
|
||||||
|
import org.apache.commons.compress.compressors.lzma.LZMACompressorOutputStream;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Mark Vainomaa
|
||||||
|
*/
|
||||||
|
public class LZMA extends AbstractAlgorithm {
|
||||||
|
@Getter private final String name = "LZMA";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OutputStream createCompressor(OutputStream outputStream) throws IOException {
|
||||||
|
return new LZMACompressorOutputStream(outputStream);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InputStream createDecompressor(InputStream inputStream) throws IOException {
|
||||||
|
return new LZMACompressorInputStream(inputStream);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user