Java « Java. Запись в jar.
Задача заключается в построчном добавлении некой инфы в текстовый файл внутри jar.
Можно ли записывать в файл, находящийся в jar-архиве? Предполагаю, что нет.
Слышал, что для этого юзают manifest - это так?
Можно ли записывать в файл, находящийся в jar-архиве? Предполагаю, что нет.
Слышал, что для этого юзают manifest - это так?
1 ответов
jar - обыкновенный архив со всеми вытекающими. Ничего смертельного от лишнего в нем файла не будет.
Пример работы с архивом:
Следующий код приводится в качестве подтверждения того, что во время выполнения jar доступен для записи. Не более. Он не сможет записать именно в ваш файл + сотрет все содержимое архива.
package org.mypackage;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
public class Main {
public static final String fileName = "test.txt";
public static void main(String[] args) {
try {
// Чтение
ZipFile zf = new ZipFile("fileFromJar.jar");
ZipEntry entry = zf.getEntry(fileName);
InputStream is = zf.getInputStream(entry);
int b;
while ((b = is.read()) != -1) {
System.out.print((char) b);
}
is.close();
zf.close();
// Запись
FileOutputStream fout = new FileOutputStream("fileFromJar.jar");
ZipOutputStream zout = new ZipOutputStream(fout);
ZipEntry ze = new ZipEntry("fileName2.txt");
zout.putNextEntry(ze);
zout.write("Мы сделали это!".getBytes());
zout.closeEntry();
zout.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}