2011-02-06 49 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

相關問題