1

这是一个完全初学者的问题,我在过去的一个小时里搜索了 stackoverflow 和谷歌,但我还没有找到我要找的东西,希望这里有人能指出我正确的方向。

我正在尝试将一个字符串写入一个 OutputStream,然后我将使用它来将数据写入 MySQL 数据库。我已经成功地从 MySQL 检索数据(从 .php,实现 JSON 和 RESTful),所以我对我在做什么有了一些想法,我想。我正在创建一个方法,它将接受一个字符串并返回一个输出流,我在写入输出流时遇到了麻烦,因为当我尝试初始化一个时,它会创建一个带有 write(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。我确定这是一个简单的问题,但我无法找到答案,甚至无法找到我想要的示例代码。如果有人能指出我正确的方向,我将不胜感激。谢谢。

4

2 回答 2

1

您可能不想使用抽象的 OutputStream 类,而是使用 ByteArrayOutputStream,它允许您编写缓冲区。更好的可能是 ObjectOutputStream ,它允许您直接编写字符串,因为字符串是可序列化的。希望有帮助。

于 2011-02-06T08:53:18.483 回答
1

您的方法可能看起来像这样,但我不确定它会完成什么。您将如何使用退回的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)方法。

于 2011-02-06T09:13:07.763 回答