mirror of
https://github.com/mitb-archive/filebot
synced 2024-11-14 05:15:03 -05:00
42 lines
1.4 KiB
Java
42 lines
1.4 KiB
Java
package net.filebot.archive;
|
|
|
|
import net.sf.sevenzipjbinding.IArchiveOpenCallback;
|
|
import net.sf.sevenzipjbinding.IInArchive;
|
|
import net.sf.sevenzipjbinding.IInStream;
|
|
import net.sf.sevenzipjbinding.SevenZip;
|
|
import net.sf.sevenzipjbinding.SevenZipException;
|
|
import net.sf.sevenzipjbinding.SevenZipNativeInitializationException;
|
|
|
|
public class SevenZipLoader {
|
|
|
|
private static boolean nativeLibrariesLoaded = false;
|
|
|
|
private static synchronized void requireNativeLibraries() throws SevenZipNativeInitializationException {
|
|
if (nativeLibrariesLoaded) {
|
|
return;
|
|
}
|
|
|
|
// initialize 7z-JBinding native libs
|
|
try {
|
|
System.loadLibrary("7-Zip-JBinding");
|
|
SevenZip.initLoadedLibraries(); // NATIVE LIBS MUST BE LOADED WITH SYSTEM CLASSLOADER
|
|
nativeLibrariesLoaded = true;
|
|
} catch (Throwable e) {
|
|
throw new SevenZipNativeInitializationException("Failed to load 7z-JBinding: " + e.getMessage(), e);
|
|
}
|
|
}
|
|
|
|
public static String getNativeVersion() throws SevenZipNativeInitializationException {
|
|
requireNativeLibraries();
|
|
|
|
return SevenZip.getSevenZipVersion().version;
|
|
}
|
|
|
|
public static IInArchive open(IInStream stream, IArchiveOpenCallback callback) throws SevenZipException, SevenZipNativeInitializationException {
|
|
requireNativeLibraries();
|
|
|
|
return (callback == null) ? SevenZip.openInArchive(null, stream) : SevenZip.openInArchive(null, stream, callback);
|
|
}
|
|
|
|
}
|