Release 1.0 and 1.1
This commit is contained in:
parent
9d2435b2a6
commit
ef26b6ecd4
24
build.gradle
24
build.gradle
@ -1,17 +1,27 @@
|
|||||||
|
buildscript {
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url "https://plugins.gradle.org/m2/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
classpath "com.github.jengelman.gradle.plugins:shadow:4.0.4"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id 'java'
|
id 'java'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply plugin: "com.github.johnrengelman.shadow"
|
||||||
apply plugin: 'java'
|
apply plugin: 'java'
|
||||||
apply plugin: 'eclipse'
|
|
||||||
apply plugin: 'application'
|
|
||||||
|
|
||||||
group 'flansupdater'
|
group 'flansupdater'
|
||||||
version '1.0-SNAPSHOT'
|
version '1.1'
|
||||||
|
|
||||||
sourceCompatibility = 1.8
|
sourceCompatibility = 1.8
|
||||||
targetCompatibility = 1.8
|
targetCompatibility = 1.8
|
||||||
mainClassName = 'ch.m4th1eu.flansupdater.Main'
|
|
||||||
compileJava.options.encoding = 'UTF-8'
|
compileJava.options.encoding = 'UTF-8'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
@ -22,17 +32,13 @@ dependencies {
|
|||||||
compile group: 'commons-io', name: 'commons-io', version: '2.4'
|
compile group: 'commons-io', name: 'commons-io', version: '2.4'
|
||||||
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
|
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
|
||||||
compile group: 'net.lingala.zip4j', name: 'zip4j', version: '2.2.8'
|
compile group: 'net.lingala.zip4j', name: 'zip4j', version: '2.2.8'
|
||||||
testCompile "junit:junit:4.12"
|
implementation 'org.zeroturnaround:zt-zip:1.13'
|
||||||
}
|
}
|
||||||
|
|
||||||
jar {
|
jar {
|
||||||
baseName = 'flans-updater'
|
baseName = 'flans-updater'
|
||||||
version = '0.1'
|
version = '0.1'
|
||||||
|
|
||||||
from {
|
|
||||||
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
|
|
||||||
}
|
|
||||||
|
|
||||||
manifest {
|
manifest {
|
||||||
attributes(
|
attributes(
|
||||||
'Main-Class': 'ch.m4th1eu.flansupdater.Main'
|
'Main-Class': 'ch.m4th1eu.flansupdater.Main'
|
||||||
|
37
docs/README.md
Normal file
37
docs/README.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
## Welcome to GitHub Pages
|
||||||
|
|
||||||
|
You can use the [editor on GitHub](https://github.com/M4TH1EU/Flan-s-Mod-Updater/edit/master/README.md) to maintain and preview the content for your website in Markdown files.
|
||||||
|
|
||||||
|
Whenever you commit to this repository, GitHub Pages will run [Jekyll](https://jekyllrb.com/) to rebuild the pages in your site, from the content in your Markdown files.
|
||||||
|
|
||||||
|
### Markdown
|
||||||
|
|
||||||
|
Markdown is a lightweight and easy-to-use syntax for styling your writing. It includes conventions for
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
Syntax highlighted code block
|
||||||
|
|
||||||
|
# Header 1
|
||||||
|
## Header 2
|
||||||
|
### Header 3
|
||||||
|
|
||||||
|
- Bulleted
|
||||||
|
- List
|
||||||
|
|
||||||
|
1. Numbered
|
||||||
|
2. List
|
||||||
|
|
||||||
|
**Bold** and _Italic_ and `Code` text
|
||||||
|
|
||||||
|
[Link](url) and ![Image](src)
|
||||||
|
```
|
||||||
|
|
||||||
|
For more details see [GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/).
|
||||||
|
|
||||||
|
### Jekyll Themes
|
||||||
|
|
||||||
|
Your Pages site will use the layout and styles from the Jekyll theme you have selected in your [repository settings](https://github.com/M4TH1EU/Flan-s-Mod-Updater/settings). The name of this theme is saved in the Jekyll `_config.yml` configuration file.
|
||||||
|
|
||||||
|
### Support or Contact
|
||||||
|
|
||||||
|
Having trouble with Pages? Check out our [documentation](https://help.github.com/categories/github-pages-basics/) or [contact support](https://github.com/contact) and we’ll help you sort it out.
|
@ -4,6 +4,7 @@ import javafx.application.Platform;
|
|||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
import javafx.scene.control.TextField;
|
import javafx.scene.control.TextField;
|
||||||
|
import javafx.scene.control.*;
|
||||||
import javafx.stage.FileChooser;
|
import javafx.stage.FileChooser;
|
||||||
import net.lingala.zip4j.ZipFile;
|
import net.lingala.zip4j.ZipFile;
|
||||||
import net.lingala.zip4j.exception.ZipException;
|
import net.lingala.zip4j.exception.ZipException;
|
||||||
@ -13,6 +14,7 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import static ch.m4th1eu.flansupdater.Main.primaryStage;
|
import static ch.m4th1eu.flansupdater.Main.primaryStage;
|
||||||
|
|
||||||
@ -40,8 +42,8 @@ public class Controller {
|
|||||||
registerHoverableButton(convertir);
|
registerHoverableButton(convertir);
|
||||||
registerHoverableButton(selectpack);
|
registerHoverableButton(selectpack);
|
||||||
|
|
||||||
registerLinkableButton(bug, "xyz");
|
registerLinkableButton(bug, "https://github.com/M4TH1EU/Flan-s-Mod-Updater/issues/new?assignees=&labels=&template=bug_report.md&title=");
|
||||||
registerLinkableButton(idea, "xyz");
|
registerLinkableButton(idea, "https://github.com/M4TH1EU/Flan-s-Mod-Updater/issues/new?assignees=&labels=&template=feature_request.md&title=");
|
||||||
|
|
||||||
packname.setEditable(false);
|
packname.setEditable(false);
|
||||||
convertir.setDisable(true);
|
convertir.setDisable(true);
|
||||||
@ -58,34 +60,42 @@ public class Controller {
|
|||||||
convertir.setText("Extraction du pack...");
|
convertir.setText("Extraction du pack...");
|
||||||
});
|
});
|
||||||
|
|
||||||
new ZipFile(selectedFile).extractAll(selectedFile.getParent() + "\\");
|
new ZipFile(selectedFile).extractAll(selectedFile.getParent() + "\\dontTouch\\");
|
||||||
} catch (ZipException e) {
|
} catch (ZipException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
Platform.runLater(() -> convertir.setText("Erreur, extraction échouée !"));
|
Platform.runLater(() -> convertir.setText("Erreur, extraction échouée !"));
|
||||||
}
|
}
|
||||||
|
|
||||||
java.lang.String[] args = new java.lang.String[]{selectedFile.getParent()};
|
String[] args = new String[]{selectedFile.getParent() + "\\dontTouch", selectedFile.getName()};
|
||||||
try {
|
try {
|
||||||
Platform.runLater(() -> convertir.setText("Mise à jour..."));
|
Platform.runLater(() -> convertir.setText("Mise à jour..."));
|
||||||
Updater.main(args);
|
Updater.main(args);
|
||||||
Platform.runLater(() -> convertir.setText("Terminé !"));
|
Platform.runLater(() -> convertir.setText("Terminé !"));
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Platform.runLater(() -> convertir.setText("Erreur, mise à jour échouée !"));
|
Platform.runLater(() -> convertir.setText("Erreur, mise à jour échouée !"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Platform.runLater(() -> {
|
||||||
|
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||||
|
alert.setTitle("Information");
|
||||||
|
alert.setHeaderText("Mise à jour terminée.");
|
||||||
|
alert.setContentText("La mise à jour du pack " + packname.getText() + " est terminée !" + "\nChemin : " + selectedFile.getParent());
|
||||||
|
|
||||||
|
alert.showAndWait();
|
||||||
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
selectpack.setDisable(false);
|
packname.setText("");
|
||||||
selectpack.setText("");
|
|
||||||
selectedFile = new File("");
|
selectedFile = new File("");
|
||||||
convertir.setText("Mettre à jour mon pack");
|
convertir.setText("Mettre à jour mon pack");
|
||||||
convertir.setDisable(false);
|
convertir.setDisable(false);
|
||||||
packname.setDisable(false);
|
packname.setDisable(false);
|
||||||
|
selectpack.setDisable(false);
|
||||||
});
|
});
|
||||||
}).start();
|
}).start();
|
||||||
|
|
||||||
@ -97,7 +107,7 @@ public class Controller {
|
|||||||
fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("ZIP Files", "*.zip"));
|
fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("ZIP Files", "*.zip"));
|
||||||
selectedFile = fileChooser.showOpenDialog(primaryStage);
|
selectedFile = fileChooser.showOpenDialog(primaryStage);
|
||||||
|
|
||||||
if(selectedFile != null){
|
if (selectedFile != null) {
|
||||||
packname.setText(selectedFile.getName());
|
packname.setText(selectedFile.getName());
|
||||||
}
|
}
|
||||||
convertir.setDisable(false);
|
convertir.setDisable(false);
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Mathieu Broillet (M4TH1EU_#0001 (on discord))
|
* @author Mathieu Broillet (M4TH1EU_#0001 (on discord))
|
||||||
* @description This program update himself your flan's mod packs from 1.7.10/1.8/etc. to 1.12.2
|
* @description This program update himself your flan's mod packs from 1.7.10/1.8/etc. to 1.12.2
|
||||||
*
|
|
||||||
* @important This program is not meant to be very pretty or well coded.
|
* @important This program is not meant to be very pretty or well coded.
|
||||||
* It just works, that's all we ask.
|
* It just works, that's all we ask.
|
||||||
*/
|
*/
|
||||||
@ -11,7 +9,9 @@ package ch.m4th1eu.flansupdater;
|
|||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.zeroturnaround.zip.ZipUtil;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
@ -27,9 +27,11 @@ public class Updater {
|
|||||||
private static File MODEL_FILE = new File("");
|
private static File MODEL_FILE = new File("");
|
||||||
|
|
||||||
private static String PATH = null;
|
private static String PATH = null;
|
||||||
|
private static String ZIP_FILE_NAME = null;
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
PATH = args[0];
|
PATH = args[0];
|
||||||
|
ZIP_FILE_NAME = args[1];
|
||||||
|
|
||||||
ArrayList<Path> files = new ArrayList<>();
|
ArrayList<Path> files = new ArrayList<>();
|
||||||
|
|
||||||
@ -49,7 +51,7 @@ public class Updater {
|
|||||||
printWriter.println("{\n" +
|
printWriter.println("{\n" +
|
||||||
" \"pack\": {\n" +
|
" \"pack\": {\n" +
|
||||||
" \"pack_format\": 1,\n" +
|
" \"pack_format\": 1,\n" +
|
||||||
" \"description\": \"Generated by M4TH1EU's Flans Updater.\"\n" +
|
" \"description\": \"Generated by Flans Updater.\"\n" +
|
||||||
" }\n" +
|
" }\n" +
|
||||||
"}");
|
"}");
|
||||||
printWriter.close();
|
printWriter.close();
|
||||||
@ -124,9 +126,31 @@ public class Updater {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
boolean delete = new File(Paths.get(PATH).getParent() + "\\" + ZIP_FILE_NAME).delete();
|
||||||
|
if (delete) {
|
||||||
|
System.out.println("Old zip deleted");
|
||||||
|
} else {
|
||||||
|
System.out.println("Old zip not deleted (error)");
|
||||||
|
}
|
||||||
|
|
||||||
|
//Zip.main(new String[]{Paths.get(PATH).getParent() + "\\" + ZIP_FILE_NAME.replaceAll(".jar", "").replaceAll(".zip", "").replaceAll(".rar", "") + "_UPDATED.zip", PATH});
|
||||||
|
ZipUtil.pack(new File(PATH), new File(Paths.get(PATH).getParent() + "\\" + ZIP_FILE_NAME.replaceAll(".jar", "").replaceAll(".zip", "").replaceAll(".rar", "") + "_UPDATED.zip"));
|
||||||
|
|
||||||
|
System.gc();
|
||||||
|
Thread.yield();
|
||||||
|
FileUtils.deleteDirectory(new File(Paths.get(PATH).getParent() + "\\dontTouch\\"));
|
||||||
|
while (new File(Paths.get(PATH).getParent() + "\\dontTouch\\").exists()) {
|
||||||
|
System.gc();
|
||||||
|
Thread.yield();
|
||||||
|
FileUtils.deleteDirectory(new File(Paths.get(PATH).getParent() + "\\dontTouch\\"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
System.out.println("UPDATED SUCCESSFULLY");
|
System.out.println("UPDATED SUCCESSFULLY");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static boolean hasModel(Path filePath) {
|
public static boolean hasModel(Path filePath) {
|
||||||
return new File(PATH + "\\assets\\flansmod\\models\\item\\" + filePath.getFileName().toString().replaceAll(".txt", ".json")).exists();
|
return new File(PATH + "\\assets\\flansmod\\models\\item\\" + filePath.getFileName().toString().replaceAll(".txt", ".json")).exists();
|
||||||
}
|
}
|
||||||
@ -152,6 +176,7 @@ public class Updater {
|
|||||||
String[] parts = strLine.split(" ");
|
String[] parts = strLine.split(" ");
|
||||||
String oldName = "ShortName " + parts[1];
|
String oldName = "ShortName " + parts[1];
|
||||||
String newName = "ShortName " + parts[1].toLowerCase().replaceAll(" ", "_");
|
String newName = "ShortName " + parts[1].toLowerCase().replaceAll(" ", "_");
|
||||||
|
System.out.println(oldName + " -> " + newName);
|
||||||
MODEL_FILE = new File(filePath.getParent().getParent() + "\\assets\\flansmod\\models\\item\\" + parts[1].toLowerCase().replaceAll(" ", "_") + ".json");
|
MODEL_FILE = new File(filePath.getParent().getParent() + "\\assets\\flansmod\\models\\item\\" + parts[1].toLowerCase().replaceAll(" ", "_") + ".json");
|
||||||
modifyFile(String.valueOf(filePath), oldName, newName);
|
modifyFile(String.valueOf(filePath), oldName, newName);
|
||||||
}
|
}
|
||||||
@ -159,18 +184,22 @@ public class Updater {
|
|||||||
String[] parts = strLine.split(" ");
|
String[] parts = strLine.split(" ");
|
||||||
String oldName = "ArmourTexture " + parts[1];
|
String oldName = "ArmourTexture " + parts[1];
|
||||||
String newName = "ArmourTexture " + parts[1].toLowerCase();
|
String newName = "ArmourTexture " + parts[1].toLowerCase();
|
||||||
|
System.out.println(oldName + " -> " + newName);
|
||||||
modifyFile(String.valueOf(filePath), oldName, newName);
|
modifyFile(String.valueOf(filePath), oldName, newName);
|
||||||
}
|
}
|
||||||
if (strLine.contains("Texture")) {
|
if (strLine.contains("Texture")) {
|
||||||
String[] parts = strLine.split(" ");
|
String[] parts = strLine.split(" ");
|
||||||
String oldName = "Texture " + parts[1];
|
String oldName = "Texture " + parts[1];
|
||||||
String newName = "Texture " + parts[1].toLowerCase().replaceAll(" ", "_");
|
String newName = "Texture " + parts[1].toLowerCase().replaceAll(" ", "_");
|
||||||
|
System.out.println(oldName + " -> " + newName);
|
||||||
|
|
||||||
modifyFile(String.valueOf(filePath), oldName, newName);
|
modifyFile(String.valueOf(filePath), oldName, newName);
|
||||||
}
|
}
|
||||||
if (strLine.contains("Icon")) {
|
if (strLine.contains("Icon")) {
|
||||||
String[] parts = strLine.split(" ");
|
String[] parts = strLine.split(" ");
|
||||||
String oldName = "Icon " + parts[1];
|
String oldName = "Icon " + parts[1];
|
||||||
String newName = "Icon " + parts[1].toLowerCase().replaceAll(" ", "_");
|
String newName = "Icon " + parts[1].toLowerCase().replaceAll(" ", "_");
|
||||||
|
System.out.println(oldName + " -> " + newName);
|
||||||
ICON_NAME = parts[1].toLowerCase().replaceAll(" ", "_");
|
ICON_NAME = parts[1].toLowerCase().replaceAll(" ", "_");
|
||||||
modifyFile(String.valueOf(filePath), oldName, newName);
|
modifyFile(String.valueOf(filePath), oldName, newName);
|
||||||
}
|
}
|
||||||
@ -202,6 +231,7 @@ public class Updater {
|
|||||||
if (jsonObject != null) {
|
if (jsonObject != null) {
|
||||||
String oldIcon = jsonObject.getAsJsonObject("textures").get("layer0").getAsString();
|
String oldIcon = jsonObject.getAsJsonObject("textures").get("layer0").getAsString();
|
||||||
String newIcon = "flansmod:items/" + ICON_NAME;
|
String newIcon = "flansmod:items/" + ICON_NAME;
|
||||||
|
System.out.println(oldIcon + " -> " + newIcon);
|
||||||
|
|
||||||
modifyFile(String.valueOf(filePath), oldIcon, newIcon);
|
modifyFile(String.valueOf(filePath), oldIcon, newIcon);
|
||||||
} else {
|
} else {
|
||||||
@ -281,6 +311,8 @@ public class Updater {
|
|||||||
filePath.getParent().toFile().mkdirs();
|
filePath.getParent().toFile().mkdirs();
|
||||||
PrintWriter printWriter = new PrintWriter(filePath.toFile());
|
PrintWriter printWriter = new PrintWriter(filePath.toFile());
|
||||||
printWriter.println(theString);
|
printWriter.println(theString);
|
||||||
|
|
||||||
|
System.out.println("Model " + filePath.toFile().getName() + "created.");
|
||||||
printWriter.close();
|
printWriter.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -321,7 +353,7 @@ public class Updater {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (files.get(i).getParent().toString().endsWith("armorFiles")) {
|
if (files.get(i).getParent().toString().endsWith("armorFiles") || files.get(i).getParent().toString().endsWith("vehicles")) {
|
||||||
if (files.get(i).getFileName().toString().endsWith(".txt")) {
|
if (files.get(i).getFileName().toString().endsWith(".txt")) {
|
||||||
try {
|
try {
|
||||||
// Open the file
|
// Open the file
|
||||||
@ -351,6 +383,7 @@ public class Updater {
|
|||||||
IOUtils.copy(inputStream, writer, Charset.forName("utf-8"));
|
IOUtils.copy(inputStream, writer, Charset.forName("utf-8"));
|
||||||
String theString = writer.toString();
|
String theString = writer.toString();
|
||||||
theString = theString + "item." + id + ".name=" + name;
|
theString = theString + "item." + id + ".name=" + name;
|
||||||
|
System.out.println("New lang entry : " + theString);
|
||||||
|
|
||||||
PrintWriter writer1 = new PrintWriter(LANG_FILE);
|
PrintWriter writer1 = new PrintWriter(LANG_FILE);
|
||||||
writer1.println(theString);
|
writer1.println(theString);
|
||||||
|
@ -1,43 +1,107 @@
|
|||||||
package ch.m4th1eu.flansupdater;
|
package ch.m4th1eu.flansupdater;
|
||||||
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipInputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
public class Zip {
|
public class Zip {
|
||||||
public static void unzip(File file) throws IOException {
|
private static String OUTPUT_ZIP_FILE = "C:\\MyFile.zip";
|
||||||
String fileZip = file.getPath();
|
private static String SOURCE_FOLDER = "C:\\testzip";
|
||||||
File destDir = new File(file.getPath());
|
List<String> fileList;
|
||||||
|
|
||||||
|
Zip() {
|
||||||
|
fileList = new ArrayList<String>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
OUTPUT_ZIP_FILE = args[0];
|
||||||
|
SOURCE_FOLDER = args[1];
|
||||||
|
|
||||||
|
Zip appZip = new Zip();
|
||||||
|
appZip.generateFileList(new File(SOURCE_FOLDER));
|
||||||
|
appZip.zipIt(OUTPUT_ZIP_FILE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zip it
|
||||||
|
*
|
||||||
|
* @param zipFile output ZIP file location
|
||||||
|
*/
|
||||||
|
public void zipIt(String zipFile) {
|
||||||
|
|
||||||
byte[] buffer = new byte[1024];
|
byte[] buffer = new byte[1024];
|
||||||
ZipInputStream zis = new ZipInputStream(new FileInputStream(fileZip));
|
|
||||||
ZipEntry zipEntry = zis.getNextEntry();
|
try {
|
||||||
while (zipEntry != null) {
|
|
||||||
File newFile = newFile(destDir, zipEntry);
|
FileOutputStream fos = new FileOutputStream(zipFile);
|
||||||
FileOutputStream fos = new FileOutputStream(newFile);
|
ZipOutputStream zos = new ZipOutputStream(fos);
|
||||||
|
|
||||||
|
System.out.println("Output to Zip : " + zipFile);
|
||||||
|
|
||||||
|
for (String file : this.fileList) {
|
||||||
|
|
||||||
|
ZipEntry ze = new ZipEntry(file);
|
||||||
|
zos.putNextEntry(ze);
|
||||||
|
|
||||||
|
FileInputStream in =
|
||||||
|
new FileInputStream(SOURCE_FOLDER + File.separator + file);
|
||||||
|
|
||||||
int len;
|
int len;
|
||||||
while ((len = zis.read(buffer)) > 0) {
|
while ((len = in.read(buffer)) > 0) {
|
||||||
fos.write(buffer, 0, len);
|
zos.write(buffer, 0, len);
|
||||||
}
|
}
|
||||||
|
in.close();
|
||||||
|
}
|
||||||
|
System.out.println("Files added");
|
||||||
|
|
||||||
|
zos.closeEntry();
|
||||||
|
//remember close it
|
||||||
|
zos.close();
|
||||||
fos.close();
|
fos.close();
|
||||||
zipEntry = zis.getNextEntry();
|
|
||||||
|
System.out.println("Done");
|
||||||
|
} catch (IOException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
zis.closeEntry();
|
|
||||||
zis.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static File newFile(File destinationDir, ZipEntry zipEntry) throws IOException {
|
/**
|
||||||
File destFile = new File(destinationDir, zipEntry.getName());
|
* Traverse a directory and get all files,
|
||||||
|
* and add the file into fileList
|
||||||
|
*
|
||||||
|
* @param node file or directory
|
||||||
|
*/
|
||||||
|
public void generateFileList(File node) {
|
||||||
|
|
||||||
String destDirPath = destinationDir.getCanonicalPath();
|
//add file only
|
||||||
String destFilePath = destFile.getCanonicalPath();
|
if (node.isFile()) {
|
||||||
|
fileList.add(generateZipEntry(node.getAbsoluteFile().toString()));
|
||||||
if (!destFilePath.startsWith(destDirPath + File.separator)) {
|
|
||||||
throw new IOException("Entry is outside of the target dir: " + zipEntry.getName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return destFile;
|
if (node.isDirectory()) {
|
||||||
|
String[] subNote = node.list();
|
||||||
|
for (String filename : subNote) {
|
||||||
|
generateFileList(new File(node, filename));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Format the file path for zip
|
||||||
|
*
|
||||||
|
* @param file file path
|
||||||
|
* @return Formatted file path
|
||||||
|
*/
|
||||||
|
private String generateZipEntry(String file) {
|
||||||
|
return file.substring(SOURCE_FOLDER.length() + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Binary file not shown.
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 6.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
BIN
src/main/resources/logo_transparent_2.png
Normal file
BIN
src/main/resources/logo_transparent_2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
Reference in New Issue
Block a user