Uploaded image for project: 'Commons IO'
  1. Commons IO
  2. IO-812

Javadoc should mention closing Streams based on file resources

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.13.0
    • 2.15.0
    • Utilities
    • None
    • Windows 11, Eclipse Adoptium OpenJDK 17.0.8.1+1

    Description

      This ticket is only used to track Javadoc changes from IO-811.

      JDK method Files.walk() clearly documents that the returned Stream<Path> must be closed: "This method must be used within a try-with-resources statement or similar control structure to ensure that the stream's open directories are closed promptly after the stream's operations have completed." However, the Commons IO methods that consume these streams fail to close them. And the methods that pass on these streams fail to document that closing them is required.

      Problematic methods that I see:

      • PathUtils.walk() lacks a documentation warning
      • FilesUncheck.walk() both variants lack a documentation warning
      • FileUtils.streamFiles() lacks a documentation warning
      • FileUtils.listFiles() consumes a Files.walk() stream without closing it
      • FileUtils.iterateFiles() claims to close the stream if the iterator is consumed, however, in my test of consuming an iterator returned from this method, a breakpoint set on FileTreeWalker.close() is never hit

      Failing to close these streams can result in file handle leaks and other problems, hence the importance of documenting and heading this requirement from the JDK method.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            adam@labkey.com Adam Rauch
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment