Запись строки в OutputStream без использования int onebyte - PullRequest
1 голос
/ 06 февраля 2011

Это полный вопрос для новичка, я провел последний час в поисках и стекового потока, и Google, но я не нашел то, что искал, надеюсь, кто-то здесь может указать мне правильное направление.

Я пытаюсь записать строку в OutputStream, которую затем буду использовать для записи данных в базу данных MySQL.Я успешно получил данные из MySQL (из .php, реализуя JSON и RESTful), поэтому я думаю, что у меня есть представление о том, что я делаю.Я создаю метод, который будет принимать строку и возвращать выходной поток, и у меня возникают проблемы с записью в выходной поток, потому что, когда я пытаюсь инициализировать один, он создает анонимный внутренний класс с записью (int oneByte)метод.Это не то, что я хочу.

private static OutputStream convertStringtoStream(String string) {
    byte[] stringByte = string.getBytes();
    OutputStream os = new OutputStream() {

        @Override
        public void write(int oneByte) throws IOException {
            /** I'd rather this method be something like
            public void write(byte[] bytes), but it requires int oneByte*/
        }
    };
    //return os here
}

Как видите, я хочу записать в свой OutputStream буфер, а не один байт.Я уверен, что это простой вопрос, но я не смог найти ответ или даже пример кода, который делает то, что я хочу.Если бы кто-то мог указать мне правильное направление, я был бы очень благодарен.Спасибо.

Ответы [ 2 ]

1 голос
/ 06 февраля 2011

Ваш метод может выглядеть так, но я не уверен, что он достигнет. Как бы вы использовали возвращенный OutputStream?

private static OutputStream convertStringtoStream(String string) {
    byte[] stringByte = string.getBytes();
    ByteArrayOutputStream bos = new ByteArrayOutputStream(string.length());
    bos.write(stringByte);
    return bos;
}

Кроме того, обратите внимание, что использование String.getBytes() может привести к неприятностям в долгосрочной перспективе, поскольку используется кодировка системы по умолчанию. Лучше выбрать явную кодировку и использовать метод String.getBytes(Charset).

1 голос
/ 06 февраля 2011

Вместо использования абстрактного класса OutputStream вы можете использовать ByteArrayOutputStream, который позволяет записывать буфер. Еще лучше, возможно, будет ObjectOutputStream, который позволит вам писать строки напрямую, поскольку строка сериализуема. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...