Java « Java. Запись в jar.

Задача заключается в построчном добавлении некой инфы в текстовый файл внутри jar.

Можно ли записывать в файл, находящийся в 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();
    }
  }
}