[
https://issues.apache.org/jira/browse/CODEC-319?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17823194#comment-17823194
]
Sheung Chi Chan commented on CODEC-319:
---------------------------------------
Wrong issue, should post to Commons-IO instead.
> DeferredFileOutputStream does not delete the temporary file created
> -------------------------------------------------------------------
>
> Key: CODEC-319
> URL: https://issues.apache.org/jira/browse/CODEC-319
> Project: Commons Codec
> Issue Type: Improvement
> Reporter: Sheung Chi Chan
> Priority: Trivial
>
> The {{DeferredFileOutputStream}} class is a custom {{OutputStream}} object
> from the Apache Commons IO library which will not write data directly to
> disk. It will only write data to disk when the configured threshold is
> reached. During the initialisation of the {{DeferredFileOutputStream}} object
> through its builder class, the user could specify a custom file path or
> provide a prefix and suffix for temporary file creation. The provided custom
> file path or the temporary file created will be used for storing the data on
> disk when the configured threshold is reached. When using the prefix/suffix
> approach, the temporary file is created using the
> {{java.nio.file.Files::createTempFile}} method only when the threshold is
> reached. The temporary file created by the
> {{java.nio.file.Files::createTempFile}} method will not be removed
> automatically, thus when the stream is closed after the threshold is reached
> and the prefix/suffix approach is used, there will be an unexpected file
> stored in the disk persistently. Although it should not be accessible by
> other users since the {{java.nio.file.Files::createTempFile}} method creates
> a temporary file only for the current user to access, it still poses a
> problem when the {{DeferredFileOutputStream}} object is being flooded with a
> large amount of data. This could use up the disk space and cause possible
> out-of-disk space problems.
> Although the flooding of data could also be a problem when using the
> user-provided file, since it is the user who creates the file, thus the user
> is responsible to remove or clean up that file when it is no longer used. But
> if the prefix/suffix approach is used, the user does not have control of the
> file and when the {{DeferredFileOutputStream}} is closed, it is assumed that
> the temporary file created during the processing of
> {{DeferredFileOutputStream}} is removed or cleaned up. It is a general
> practice for Java OutputStream to clean up its process and temporary objects
> when its close method is called. Thus the missing that could result in
> unexpectedly large files staying in the disk unawared.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)