写文件/大量字节失败

时间:2012-08-25 09:15:38

标签: java sockets byte datainputstream dataoutputstream

我在socket上写文件/大量字节。

但是我要说我在写字节。我这样做了;

//Connection.data is a dataoutputstream
byte[] a = new byte[filelength];
//load file into the array
//write file
for (int i = 0; i < a.length; i++) {
Connection.data.writeByte(a[i]);                                              
}

收到:

//dat is a datainputstream
byte[] byteA = new byte[bytestoread]
for (int i = 0; i < toread; i++) {
        byteA[i] = dat.readByte();
}

我记录了传入的数据,并说如果文件是200000字节,它会停在199990字节左右等。基本上,任何大小的byte [],它都会  停在最后一个字节,然后超时。如果你不明白,我会解释更多。感谢。

1 个答案:

答案 0 :(得分:3)

完成编写后,需要调用flush以确保实际发送字节。

Connection.data.flush();

来自文档:

  

刷新此数据输出流。这会强制任何缓冲的输出字节   被写到流中。

     

DataOutputStream的flush方法   调用其底层输出流的flush方法。