Java:与DataInputStream中的dis.read()和dis.readUTF()的区别
简单的问题Java:与DataInputStream中的dis.read()和dis.readUTF()的区别,java,sockets,serversocket,datainputstream,Java,Sockets,Serversocket,Datainputstream,简单的问题 dis.read()和dis.readUTF()有什么区别 例如,dis.read() 对吗 若服务器有dis.readUTF(),它不能读取字节流吗 @Override public void run() { // TODO Auto-generated method stub while(mEnabled) { if (!mFileReceive) { try { // read
dis.read()
和dis.readUTF()
有什么区别
例如,dis.read()
对吗
若服务器有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;
}
@覆盖
公开募捐{
//TODO自动生成的方法存根
while(mEnabled)
{
如果(!mFileReceive){
试一试{
//阅读
字符串tmpStr=dis.readUTF();
//下面是'dis.readUTF()`=4096)
继续;
System.out.println(“Print:+mStringBuffer”);
parse=newparseJSON(null,mStringBuffer.toString());
//确认信息
如果(已启用){
mFileName=“{opcode:0x06,ACK:C”+parse.getParsedData().get(“ACK”).substring(1)+“}”;
dos.writeUTF(mFileName);
dos.flush();
System.out.println(“确认消息发送:“+mFileName”);
mFileName=null;
}
if(parse.getParsedData().get(“操作码”).equals(“155”)){
mFileReceive=true;
}
parse.clear();
parse=null;
}捕获(IOE异常){
//TODO自动生成的捕捉块
System.out.println(“服务器线程断开”);
打破
}
readUTF()以修改后的UTF-8格式编码的Unicode字符串表示形式从流中读取;然后将该字符串作为字符串返回
您应该使用以字节数组为参数的读取方法。以下是其说明:
公共最终整数读取(字节[]b)引发IOException
从包含的输入流中读取一定数量的字节,并将其存储到缓冲区数组b中。实际读取的字节数作为整数返回。(1)您不了解Javadoc的哪一部分?(2)“如果服务器实现了dis.readUTF(),则无法读取字节流?”没有意义。
DataInputStream
和ObjectInputStream
实现这两种方法。@EJP我的问题是'dis.readUTF'可以读取字节流。JAVADOC说此操作的字节是从包含的输入流读取的。客户端发送到服务器字节数组。但服务器没有捕获它。所有这些API都是从字节流读取的。但是rreadUTF()
读取writeUTF()编写的格式。如果你不调用writeUTF()`我不明白你为什么要调用readUTF()
@EJP,非常感谢,readUTF()
,writeUTF()
看起来像是合作伙伴。@EJP我的Ubuntu使用了Locale KO\u KR.utf8。所以,我打算使用“readUTF()”“。非常感谢。你的建议非常有用。@11684,没错,这是我的珍品。@EJP客户端发送到服务器字节数组数据。@reinhard.lee在这种情况下,你应该在你的问题中提到这一点。你没有说客户端在写什么。@EJP对不起,我不知道。”。