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 字符串的表示形式;然后这个字符串作为字符串返回。

您应该使用以字节数组作为参数的读取方法。这是它的解释:

public final int read(byte[] b) 抛出 IOException

从包含的输入流中读取一些字节并将它们存储到缓冲区数组中 b。实际读取的字节数以整数形式返回。

于 2012-06-05T05:44:18.073 回答