简单问题记录-org.xnio.channels.FixedLengthOverflowException

内容目录

异常:

    org.xnio.channels.FixedLengthOverflowException
    at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.write(AbstractFixedLengthStreamSinkConduit.java:100)
    at org.xnio.conduits.Conduits.writeFinalBasic(Conduits.java:132)
    at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.writeFinal(AbstractFixedLengthStreamSinkConduit.java:175)
    at org.xnio.conduits.ConduitStreamSinkChannel.writeFinal(ConduitStreamSinkChannel.java:104)
    at io.undertow.channels.DetachableStreamSinkChannel.writeFinal(DetachableStreamSinkChannel.java:195)
    at io.undertow.server.HttpServerExchange$WriteDispatchChannel.writeFinal(HttpServerExchange.java:2160)
    at io.undertow.servlet.spec.ServletOutputStreamImpl.writeBufferBlocking(ServletOutputStreamImpl.java:573)
    at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:610)
    at org.springframework.security.web.util.OnCommittedResponseWrapper$SaveContextServletOutputStream.close(OnCommittedResponseWrapper.java:529)
    at 

代码:

    byte[] buffer = new byte[1024];
    // 文件输入流
    // 输出流
    try (OutputStream os = response.getOutputStream();
         FileInputStream fis = new FileInputStream(file);
         BufferedInputStream bis = new BufferedInputStream(fis)) {
        int i = bis.read(buffer);
        while (i != -1) {
            os.write(buffer);
            i = bis.read(buffer);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

解决方式:

byte[] buffer = new byte[1024];
try (OutputStream os = response.getOutputStream();
    FileInputStream fis = new FileInputStream(file);
    BufferedInputStream bis = new BufferedInputStream(fis)) {
    int i = bis.read(buffer);
    while (i != -1) {
        os.write(buffer, 0, i);  // 只写入实际读到的字节数
        i = bis.read(buffer);
    }
} catch (Exception e) {
    e.printStackTrace();
}

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部