尝试编写Java代码以在Linux中提取.7z文件。我的.7z文件包含符号链接,但是提取后,符号链接将转换为文本文件。 如何从.7z文件中提取符号链接,并将其保留为符号链接? 尝试了两种不同的方法,但没有一种起作用。
1. MyRandomAccessFile istream = new MyRandomAccessFile(<path-to-7z-file>, "r");
IInArchive archive = new Handler();
archive.Open(istream);
ArchiveExtractCallback extractCallbackSpec = new ArchiveExtractCallback();
extractCallbackSpec.setOutFilePath(<o/p path>);
IArchiveExtractCallback extractCallback = extractCallbackSpec;
extractCallbackSpec.Init(archive);
archive.Extract(null, -1, IInArchive.NExtract_NAskMode_kExtract, extractCallback);
2. SevenZFile sevenZFile = new SevenZFile(new File(<path-to-7z-file>));
SevenZArchiveEntry entry;
while ((entry = sevenZFile.getNextEntry()) != null) {
if (entry.isDirectory()) {
continue;
}
File curfile = new File(<o/p path>, entry.getName());
File parent = curfile.getParentFile();
if (!parent.exists()) {
parent.mkdirs();
}
FileOutputStream out = new FileOutputStream(curfile);
byte[] content = new byte[(int) entry.getSize()];
sevenZFile.read(content, 0, content.length);
out.write(content);
out.close();