Java: Difference with dis.read() and dis.readUTF() in DataInputStream

11,587

readUTF() reads from the stream in a representation of a Unicode character string encoded in modified UTF-8 format; this string of characters is then returned as a String.

You should use read method which takes bytes array as an argument. Here is its explanation:

public final int read(byte[] b) throws IOException

Reads some number of bytes from the contained input stream and stores them into the buffer array b. The number of bytes actually read is returned as an integer.

Share:
11,587
reinhard.lee
Author by

reinhard.lee

Just Start Development!

Updated on June 05, 2022

Comments

  • reinhard.lee
    reinhard.lee almost 2 years

    Simple Question.

    What is Difference with dis.read() and dis.readUTF()?

    For example, dis.read() only read to byte array, and dis.readUTF() access String type.

    Is it correct?

    If Server has implements dis.readUTF(), it can not read byte stream?

    @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;
                }