在jersey multipart中上载文件时是否应显式关闭inputstream?

在jersey multipart中上载文件时是否应显式关闭inputstream?,jersey,jersey-2.0,multipart,Jersey,Jersey 2.0,Multipart,我使用Jersey multipart在控制器中上载文件 以下是典型的: 我在网上读过很多示例代码,但inputstream并没有关闭 我的问题是,我应该显式或手动关闭uploadedInputStream吗?为什么 @Path("/file") public class UploadFileService { @POST @Path("/upload") @Consumes(MediaType.MULTIPART_FORM_DATA) public Respo

我使用Jersey multipart在控制器中上载文件

以下是典型的:

我在网上读过很多示例代码,但inputstream并没有关闭

我的问题是,我应该显式或手动关闭uploadedInputStream吗?为什么

@Path("/file")
public class UploadFileService {

    @POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(
        @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {

        String uploadedFileLocation = "d://uploaded/" + fileDetail.getFileName();

        // save it
        writeToFile(uploadedInputStream, uploadedFileLocation);

        String output = "File uploaded to : " + uploadedFileLocation;

        return Response.status(200).entity(output).build();

    }

    // save uploaded file to new location
    private void writeToFile(InputStream uploadedInputStream,
        String uploadedFileLocation) {

        try {
            OutputStream out = new FileOutputStream(new File(
                    uploadedFileLocation));
            int read = 0;
            byte[] bytes = new byte[1024];

            out = new FileOutputStream(new File(uploadedFileLocation));
            while ((read = uploadedInputStream.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }
            out.flush();
            out.close();
        } catch (IOException e) {

            e.printStackTrace();
        }

    }

}