【发布时间】:2012-08-25 20:31:59
【问题描述】:
我正在通过套接字写入文件/大量字节。
但是假设我正在写字节。我这样做;
//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 字节等处。基本上,任何大小的字节 [],它都会 停在最后一个字节,然后超时。如果你不明白,我会解释更多。谢谢。
【问题讨论】:
-
一次写入一个字节可能非常低效。我建议一次写入数据块。例如512 字节到 32KB。
-
同样的问题。这就是我尝试这种方法的原因。
-
在任何一种情况下,您都需要确保正在刷新数据。
-
“bytestoread”从何而来?
-
它在发送所有数据之前打印出传入数据的大小,文件大小。
标签: java sockets byte datainputstream dataoutputstream