Как преобразовать Средство чтения в InputStream и Устройство записи к OutputStream?

Можно сделать это просто объединение названия сценария ([112]) с realpath и/или dirname. Это работает на Bash и Shell.

#!/usr/bin/env bash

RELATIVE_PATH="[110]"
RELATIVE_DIR_PATH="$(dirname "[110]")"
FULL_DIR_PATH="$(realpath "[110]" | xargs dirname)"
FULL_PATH="$(realpath "[110]")"

echo "RELATIVE_PATH->${RELATIVE_PATH}<-"
echo "RELATIVE_DIR_PATH->${RELATIVE_DIR_PATH}<-"
echo "FULL_DIR_PATH->${FULL_DIR_PATH}<-"
echo "FULL_PATH->${FULL_PATH}<-"

вывод будет чем-то вроде этого:

# RELATIVE_PATH->./bin/startup.sh<-
# RELATIVE_DIR_PATH->./bin<-
# FULL_DIR_PATH->/opt/my_app/bin<-
# FULL_PATH->/opt/my_app/bin/startup.sh<-

0$ название самого сценария

https://www.tldp.org/LDP/abs/html/othertypesv.html

пример: https://gist.github.com/LozanoMatheus/da96b4e44b89b13ad4af10ac4602ad99

87
задан Andrei Savu 15 September 2008 в 11:51
поделиться

3 ответа

Если вы начинаете со строки, вы также можете сделать следующее:

new ByteArrayInputStream(inputString.getBytes("UTF-8"))
93
ответ дан 24 November 2019 в 07:43
поделиться

Вы пытаетесь записать содержимое Reader в OutputStream ? В этом случае вам будет легче обернуть OutputStream в OutputStreamWriter и записать char s из Reader в Writer , вместо того, чтобы пытаться преобразовать считыватель в InputStream :

final Writer writer = new BufferedWriter(new OutputStreamWriter( urlConnection.getOutputStream(), "UTF-8" ) );
int charsRead;
char[] cbuf = new char[1024];
while ((charsRead = data.read(cbuf)) != -1) {
    writer.write(cbuf, 0, charsRead);
}
writer.flush();
// don't forget to close the writer in a finally {} block
4
ответ дан 24 November 2019 в 07:43
поделиться

Также обратите внимание, что если вы начинаете со String, вы можете пропустить создание StringReader и создать InputStream за один шаг с помощью org.apache. commons.io.IOUtils из Commons IO вот так:

InputStream myInputStream = IOUtils.toInputStream(reportContents, "UTF-8");

Конечно, вам все еще нужно подумать о кодировке текста, но, по крайней мере, преобразование происходит за один шаг.

19
ответ дан 24 November 2019 в 07:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: