[ 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)