将字符串写入OutputStream而不使用int onebyte

时间:2011-02-06 08:44:10

标签: java android mysql outputstream

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

我正在尝试将一个字符串写入一个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,而不是单个字节。我确信这是一个简单的问题,但是我找不到答案,甚至找不到我想要的代码。如果有人能指出我正确的方向,我真的很感激。感谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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)方法。