1

これはまったくの初心者の質問です。過去 1 時間、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
}

ご覧のとおり、1 バイトではなく、バッファーを使用して OutputStream に書き込みたいと考えています。これは簡単な質問だと思いますが、答えを見つけることも、私が望むことを行うサンプルコードさえ見つけることもできませんでした. 誰かが私を正しい方向に向けることができれば、本当に感謝しています。ありがとう。

4

2 に答える 2

1

抽象 OutputStream クラスを使用する代わりに、バッファを書き込むことができる ByteArrayOutputStream を使用することをお勧めします。さらに良いのは、文字列がシリアライズ可能であるため、文字列を直接書き込むことができる ObjectOutputStream です。それが役立つことを願っています。

于 2011-02-06T08:53:18.483 に答える
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)メソッドを使用することをお勧めします。

于 2011-02-06T09:13:07.763 に答える