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.
Comments
-
reinhard.lee almost 2 years
Simple Question.
What is Difference with
dis.read()
anddis.readUTF()
?For example,
dis.read()
only read to byte array, anddis.readUTF()
accessString
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; }