2011-02-06 50 views
1

这是一个总的初学者问题,我花了一个小时搜索stackoverflow和Google,但是我还没有找到我在找的东西,希望这里有人能够指向正确的方向。将字符串写入OutputStream而不使用int onebyte

我想写一个字符串到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,而不是一个字节。我相信这是一个简单的问题,但我一直无法找到答案,甚至没有按照我想要的代码示例。如果有人能指引我正确的方向,我会非常感激。谢谢。

回答

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)方法。

+0

我打算做的是将这些数据发送到一个php页面,然后将其解码并将其写入MySQL数据库。这是做错了吗?我的整个事情的最终目标是从android写入一些数据到MySQL数据库。我所看过的所有RESTful示例都关心检索数据,但不写数据。你知道一个不同的/更好的方法来实现这个吗? 编辑:由于某种原因,我的浏览器没有显示我的评论,我认为它没有通过,所以我试图重新发布,对不起。 – JMRboosties 2011-02-06 09:37:21

1

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

+0

是的,我看到这提到了几次。但是如果我没有弄错,要初始化ObjectOutputStream,它看起来像这样:`ObjectOutputStream oos = ObjectOutputStream(OutputStream output);`这需要一个OutputStream ...我的问题不会存在吗? – JMRboosties 2011-02-06 08:58:33

相关问题