3

簡単な質問。

dis.read()との違いは何dis.readUTF()ですか?

たとえば、dis.read()バイト配列とdis.readUTF()アクセスStringタイプにのみ読み取ります。

それが正しいか?

サーバーに実装がある場合dis.readUTF()、バイトストリームを読み取ることができませんか?

@Override
public void run() {
    // TODO Auto-generated method stub
    while(mEnabled)
    {
        if (!mFileReceive) {
            try {
                // read
                String tmpStr = dis.readUTF();
                // here come `dis.readUTF()` <- it is can not read byte array?

                mStringBuffer += tmpStr;

                if (tmpStr.length() >= 4096)
                    continue;
                System.out.println("Print : " + mStringBuffer);

                parse = new ParseJSON(null, mStringBuffer.toString());
                // Ack Message
                if (mAckEnabled) {
                    mFileName = "{opcode:0x06,ACK:C" + parse.getParsedData().get("ACK").substring(1) + "}";
                    dos.writeUTF(mFileName);
                    dos.flush();
                    System.out.println("Ack Message Send : " + mFileName);
                    mFileName = null;
                }
                if (parse.getParsedData().get("opcode").equals("155")) {
                    mFileReceive = true;
                }
                parse.clear();
                parse = null;

            } catch (IOException e) {
                // TODO Auto-generated catch block
                System.out.println("ServerThread disconnect");
                break;
            }
4

1 に答える 1

2

readUTF() は、変更された UTF-8 形式でエンコードされた Unicode 文字列の表現でストリームから読み取ります。この文字列は String として返されます。

引数としてバイト配列を取る read メソッドを使用する必要があります。その説明は次のとおりです。

public final int read(byte[] b) は IOException をスローします

含まれている入力ストリームからいくつかのバイトを読み取り、それらをバッファー配列 b に格納します。実際に読み取られたバイト数は整数として返されます。

于 2012-06-05T05:44:18.073 に答える