Заголовок говорит все, хотя в методе Java Unzipping он закрывается и выдает эту ошибку:
java.io.FileNotFoundException: ##File hierarchy here#\armor (Access is denied)
Но если я попытаюсь разархивировать с помощью 7-zip, я получу следующие ошибки:
Error: can not delete ouput file: ##File hierarchy here#\armor
Для каждой папки в банке, что означает, что это должно быть проблемой с моим методом архивирования - я надеюсь, что это имеет смысл!
Шаги, которые я предпринял:
1. Разархивировал банку с успехом
2. Успешно застегнул банку
3. Снова разархивируйте, чтобы найти все эти ошибки.
Вот мой способ архивирования:
package minecraftmodmanager;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.jar.JarEntry;
import java.util.jar.JarOutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Tom
*/
public class jarZip {
public static void zipAll(File Directory, File jar) {
try {
JFrame.debugLn("Opening Jos: " + jar.getName() + "... ");
JarOutputStream jos = new JarOutputStream(new FileOutputStream(jar));
zip(Directory, "", jos);
jos.close();
} catch (IOException ex) {
Logger.getLogger(jarZip.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void zip(File Directory, String Hierarchy, JarOutputStream jos) {
try {
BufferedInputStream in = null;
File[] directoryFiles = Directory.listFiles();
JFrame.debug("JOS Opened!");
System.out.println();
String FullDirectoryPath = Directory.getAbsolutePath() + File.separator;
String BasePath = FullDirectoryPath.substring(0, FullDirectoryPath.lastIndexOf(File.separator) + 1);
JFrame.debug("BasePath: " + BasePath);
for (int FileNumber = 0; FileNumber < directoryFiles.length; FileNumber++) {
String name = directoryFiles[FileNumber].getPath();
String JarFileName = name.replace(BasePath, "");
String FullFileHierarchy = Hierarchy + JarFileName;
if (directoryFiles[FileNumber].isDirectory()) {
zip(directoryFiles[FileNumber], FullFileHierarchy + "/", jos);
}
JFrame.debug("name: " + FullFileHierarchy);
JarEntry entry = new JarEntry(FullFileHierarchy);
jos.putNextEntry(entry);
if(!directoryFiles[FileNumber].isDirectory()) {
in = new BufferedInputStream(new FileInputStream(directoryFiles[FileNumber]));
byte[] buffer = new byte[1024];
while (true) {
int count = in.read(buffer);
if (count == -1) {
break;
}
jos.write(buffer, 0, count);
}
jos.closeEntry();
} else {
jos.closeEntry();
}
}
} catch (Exception ex) {
Logger.getLogger(jarZip.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Ценится, ребята! Как-то новенький здесь, так что "пошли меня вон, если я не следую и правила