Эквивалентный StringBufferInputStream неустаревший

Я работаю с LogManager.readConfiguration() который требует InputStream, содержание которого я хотел бы произойти из строки. Есть ли эквивалент StringBufferInputStream это не удерживается от использования, такие как a ReaderToInputStreamAdaptor?

13
задан Kaleb Pederson 28 January 2010 в 22:51
поделиться

3 ответа

Документация logmanager.readconfiguration () говорит, что он принимает данные в формате java.util.properties . Итак, действительно правильная реализация, безопасна для кодирования, является это:

String s = ...;

StringBuilder propertiesEncoded = new StringBuilder();
for (int i = 0; i < s.length(); i++)
{
    char c = s.charAt(i);
    if (c <= 0x7e) propertiesEncoded.append((char) c);
    else propertiesEncoded.append(String.format("\\u%04x", (int) c)); 
}
ByteArrayInputStream in = new ByteArrayInputStream(propertiesEncoded.toString().getBytes("ISO-8859-1"));

Редактирование: Алгоритм кодирования Исправлено

Редактирование2: На самом деле, Java.util.properties Формат имеет некоторые другие ограничения ( Такие как сбежание \ и других специальных символов), см. Документы

edit3: Red3: Снятие с удалением 0x00-0x1f, поскольку Alan Moore предлагает

4
ответ дан 1 December 2019 в 23:47
поделиться

см. java.io.bytearrayinputtream

String s = "test";
InputStream input = new ByteArrayInputStream(s.getBytes("UTF8"));
5
ответ дан 1 December 2019 в 23:47
поделиться

Я могу читать это неправильно, но если вы используете jQuery, не $ зарезервированный символ? Вы пытались просто установить ваши имена переменной, чтобы они не используют его?

Если так:

var divA = $("<div></div>").addClass('classA');
divA.wrap("<div class=\"classB\"></div>");
divA.insertAfter($("#myDiv"));

или

divA.after($("#myDiv"));

вот документы jQuery по этому вопросу.

-121--1918146-

Используйте bytearrayinputStream и будьте осторожны, чтобы указать подходящее кодирование символов. например

ByteArrayInputStream(str.getBytes("UTF8"));

Вам нужно беспокоиться о кодировке символов, чтобы определить, как каждый символ преобразуется в набор байтов. Обратите внимание, что вы можете использовать по умолчанию Getbytes () Метод и укажите кодировку JVM прогонов с помощью -DFile.Encoding = ...

8
ответ дан 1 December 2019 в 23:47
поделиться
Другие вопросы по тегам:

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