2011-02-06 13 views
1

これは初心者からの質問です。私は過去1時間をstackoverflowとGoogleの両方で検索しましたが、探しているものが見つかりませんでした。正しい方向に私を向ける。int onebyteを使用せずにOutputStreamに文字列を書き込む

文字列をOutputStreamに書き込もうとしていますが、これを使ってデータをMySQLデータベースに書き出します。私は(.phpからJSONとRESTfulを実装している)MySQLからのデータを正常に取得しています。だから私は何をしているのか考えています。文字列を取り、出力ストリームを返すメソッドを作成しています。初期化しようとすると、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バイトではなくバッファを書きたいと思います。私はこれが簡単な質問だと確信していますが、私は答えを見つけることができませんでした。誰かが正しい方向に私を指すことができるなら、私は本当にそれを感謝します。ありがとう。

答えて

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データベースに書き出すことでした。これはそれをすることについて間違った方法ですか?この究極の目標は、アンドロイドからMySQLデータベースにデータを書き込むことです。私が見てきたRESTfulな例はすべて、データの取得に関係していますが、データの書き込みには関係しません。あなたはこれを達成するための別の/より良い方法を知っていますか? 編集:私のブラウザは何らかの理由でコメントを表示していなかったので、私はそれが通過しなかったと思ったので、再投稿しようとしました、申し訳ありません。 – JMRboosties

+0

ええと、PHPページに文字列を送信するHTTPリクエストを作成しようとしているようです。私はRESTにあまり慣れていませんが、次のコードサンプル(私ではない)を見て、[POST要求をする](http://www.exampledepot.com/egs/java.net/post.html) )。 –

+0

ありがとうございました。 – JMRboosties

1

抽象的なOutputStreamクラスを使用する代わりに、バッファを書き込むことができるByteArrayOutputStreamを使用すると便利です。おそらくObjectOutputStreamがあります。これは、stringが直列化可能なので文字列を直接書くことができます。希望が役立ちます。

+0

そう、私はこれを数回見ました。 ObjectOutputStreamを初期化するのに間違いがないなら、次のようになります: 'ObjectOutputStream oos = ObjectOutputStream(OutputStream output);' OutputStreamが必要です...私の問題は残っていませんか? – JMRboosties

関連する問題