HttpServletResponse PrintWriter для записи InputStream - PullRequest
6 голосов
/ 27 января 2012

У меня есть объект HttpServletResponse, и мне нужно написать файл, содержащийся в банке. Следующие сегменты кода не работают для меня.

URI uri = <myclass>.class.getResource("/" + filename).toURI(); 
PrintWriter out = response.getWriter();
File f = new File(uri); 
FileReader bis = new FileReader(f);
char[] buff = new char[1024];
int bytesRead;
// Simple read/write loop.
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
    out.write(buff, 0, bytesRead);
}

Я знаю, что это будет работать

InputStream inputStream = <myclass>.class.getResourceAsStream("/" + filename);

но я не могу получить PrintWriter out.write для записи inputStream.

Может кто-нибудь сказать мне, как это можно сделать.

Спасибо

Ответы [ 2 ]

5 голосов
/ 21 февраля 2012

Разрешено с использованием следующего

InputStream inputStream = KCSSchemaController.class.getResourceAsStream("/" + schemaname);

OutputStream output = response.getOutputStream();

ByteStreams.copy(inputStream, output);

output.flush();
0 голосов
/ 27 января 2012

необходимо написать файл, содержащийся в банке.

Это невозможно.В основном вам нужно получить абсолютный путь файловой системы диска к файлу JAR, распаковать его, используя JarInputStream (JAR - это, в основном, файл ZIP, который следует определенной структуре папок и получает специальную обработку в Java), отредактируйте / добавьте файл в извлеченную структуру папок и затем упакуйте его снова, используя JarOutputStream.Возможно, вам потребуется перезагрузить его позже, используя (пользовательский) ClassLoader, если вам потребуется изменить содержимое JAR позже во время выполнения.

Это, однако, довольно сложно и не имеет смысла.В качестве совершенно другой альтернативы не пытайтесь изменить JAR, а просто храните данные в другом месте, например, в фиксированном месте в файловой системе диска или в базе данных, или в качестве предпочтения пользователя / системы, и так далее.Какой способ выбора зависит от конкретного функционального требования, которое не ясно из вопроса.

...