睡不醒的ZWW 2020-10-08 17:48 采纳率: 0%
浏览 1045

java socket 传输大文件(2g)时,传输过程中总会抛出java.io.UTFDataFormatException: malformed input around byte 1异常,小文件不会抛出异常

使用java socket 实现大文件传输,在传输大文件时总会抛出一次异常:java.io.UTFDataFormatException: malformed input around byte 1

发送端

                while ((i = fin.read(outBytes)) > 0) {
                    dataOutputStream.writeUTF("003");
                    long point = position * outBytes.length;
                    dataOutputStream.writeLong(point);// 当前指针位置,接收端从此处开始写入
                    dataOutputStream.writeInt(i); // 数据长度
                    dataOutputStream.write(outBytes, 0, i); // 发送端执行到这里抛出broke pipe
                    dataOutputStream.flush();
                    position = position + 1;
                }

接收端

operate = in.readUTF(); // 接收端这里抛出异常
 case "003": {
                    // 处理发送的文件(接收) 
                    try (RandomAccessFile randomAccessFile = new RandomAccessFile(enPath, "rw")) {
                        // 游标位置
                        long pos = in.readLong();
                        // 数据长度
                        int inputSize = in.readInt();
                        byte[] eoutBytes = new byte[inputSize];
                        in.read(eoutBytes);
                        // 将游标跳到指定位置
                        randomAccessFile.seek(pos);

                        randomAccessFile.write(eoutBytes, 0, inputSize);
                        pre = pos - inputSize;
                        transferFile.setCur(pre);
                    }
                    return true;
                }

发送端循环发送003,游标位置,数据长度,数据内容
接收端循环读取utf,long,int,byte[]

因为在传输小文件时不会抛出java.io.UTFDataFormatException: malformed input around byte 1,传输大文件时总会在等待一个特定的时间抛出异常,所以怀疑是不是有某个队列满了导致operate=in.readUTF()读取到错误的数据.但找不到问题所在

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-10-08 23:20
    关注

    超过2GB,如果你用整数作为文件长度,会导致溢出,成为负数,是不是这个原因,检查下你的代码。

    评论

报告相同问题?

悬赏问题

  • ¥15 写uniapp时遇到的问题
  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改
  • ¥15 请看一下,学校实验要求,我需要具体代码
  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥20 MATLAB绘制两隐函数曲面的交线
  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流