作者sbrhsieh (sbr)
看板java
标题Re: [问题] 串流读取问题
时间Sat Jun 6 11:17:53 2009
※ 引述《a613204 (胖胖)》之铭言:
: 传送的片断程式码
: ---------------------------------------------------------
: public void sendMessage()
: {
: message="From "+name+": "+input.getText();
: try
: {
: out.writeChar('M');
: out.writeUTF(message);
: out.flush();
: show.append(message);
: show.setCaretPosition(show.getText().length());
: input.setText("");
: }
: catch(IOException e)
: {
: }
: }
: 写的是网路资料传送
: 写法1 : message='M'+"From "+name+": "+input.getText();
: out.writeUTF(message);
: 写法2 : message="From "+name+": "+input.getText();
: out.writeChar('M');
: out.writeUTF(message);
: 想请问这两种写法有差别吗??
: 因为读取时候用第二种写法,readChar() 可以读到第一个字是'M'
: 但是第一种写法好像不行
: 请问这两种写法有差别吗? 差在哪里呢?
有差别。
看一下 java.io.DataOutput 的 API doc。
writeUTF 会先送出 2 bytes 的数据(表示接下来的 UTF byte sequence 长度),
再送出指定字串经 UTF-8 编码 encode 之後的 byte sequence。
out.writeChar('M');
out.writeUTF('Hello');
=> 0x4D 0x00 0x05 0x48 0x65 0x6C 0x6C 0x6F
M H e l l o
================================================
out.writeUTF('MHello');
=> 0x00 0x06 0x4D 0x48 0x65 0x6C 0x6C 0x6F
M H e l l e
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.137.252