2017-01-23 1 views
0

После исчерпания интернета, который ищет подходящий способ записи потока данных в работающем JAR-файле, я понятия не имею, как взять поток данных (например, строка) и вывод в файл *.txt рядом с *.jar. Вот мое письмо попытка:Запись в внешний файл (локальная файловая система) из JAR

InputStream stream = new ByteArrayInputStream("some string".getBytes("UTF-8")); 
OutputStream resStreamOut = new FileOutputStream(new File("/dir-next-to-jar/some.txt")); 
int readBytes; 
byte[] buffer = "some string".getBytes(); 
while ((readBytes = stream.read(buffer)) > 0) { 
    resStreamOut.write(buffer, 0, readBytes); 
} 

This как я уже успешно загружен локальный файл рядом с JAR в JAR:

InputStream stream = ThisClassName.class.getClass().getResourceAsStream("/dir-next-to-jar/some.txt"); 

Итак, как я пишу новые данные в то же самое файл, который я загрузил в поток в JAR?

Похоже, что очевидным решением было бы обратить вспять действие, которое я взял, загрузив файл *.text в JAR, но это оказалось невозможным.

Примечание: Я использую String как тип данных интереса здесь, но на самом деле, я заинтересован в написании JSONObject и BufferedImage из JAR в файл.

Пожалуйста, помогите !!!

+0

В чем же проблема с кодом, который вы опубликовали в первом фрагменте? – xTrollxDudex

+0

Я не совсем уверен. я придумал это, взяв кусочки этого - http://stackoverflow.com/questions/10308221/how-to-copy-file-inside-jar-to-outside-the-jar – ddaaggeett

+0

Ну, это не работает? Вызывает ли это исключение? Я задаю * что * проблема, а не * почему * :) – xTrollxDudex

ответ

0

, если у вас есть данные в виде строки, как об использовании FileUtils Апача:

https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html#writeStringToFile(java.io.File,%20java.lang.String,%20java.nio.charset.Charset) Вы можете написать TXT в файл с одной строкой.

+0

Использование сторонних библиотек несет существенный штраф: они уменьшают переносимость программы и более восприимчивы к ошибкам, чем Java SE. Использование сторонней библиотеки для чего-то, что можно сделать с тремя строками кода, не кажется мне выгодным компромиссом. – VGR

+0

выглядит так: библиотека ApacheV2 должна работать нормально под проектом GPLv3 - https://www.apache.org/licenses/GPL-compatibility.html – ddaaggeett

Смежные вопросы