这是一个初学者问题,过去一小时我一直在搜索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,而不是单个字节。我确信这是一个简单的问题,但是我找不到答案,甚至找不到我想要的代码。如果有人能指出我正确的方向,我真的很感激。感谢。
答案 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)
方法。