Java InputStream reading problem

前端 未结 4 1904

I have a Java class, where I\'m reading data in via an InputStream

    byte[] b = null;
    try {
        b = new byte[in.available()];
        in.read(b);
          


        
4条回答
  •  独厮守ぢ
    2020-12-16 20:22

    Below is a snippet of code that downloads a file (*. Png, *. Jpeg, *. Gif, ...) and write it in BufferedOutputStream that represents the HttpServletResponse.

    BufferedInputStream inputStream = bo.getBufferedInputStream(imageFile);
    try {
        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        int bytesRead = 0;
        byte[] input = new byte[DefaultBufferSizeIndicator.getDefaultBufferSize()];
        while (-1 != (bytesRead = inputStream.read(input))) {
            buffer.write(input, 0, bytesRead);
        }
        input = buffer.toByteArray();
    
        response.reset();
        response.setBufferSize(DefaultBufferSizeIndicator.getDefaultBufferSize());
        response.setContentType(mimeType);
        // Here's the secret. Content-Length should equal the number of bytes read.
        response.setHeader("Content-Length", String.valueOf(buffer.size()));
        response.setHeader("Content-Disposition", "inline; filename=\"" + imageFile.getName() + "\"");
    
        BufferedOutputStream outputStream = new BufferedOutputStream(response.getOutputStream(), DefaultBufferSizeIndicator.getDefaultBufferSize());
        try {
            outputStream.write(input, 0, buffer.size());
        } finally {
            ImageBO.close(outputStream);
        }
    } finally {
        ImageBO.close(inputStream);
    }
    

    Hope this helps.

提交回复
热议问题