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

FileUtils.copyFile for the locked file (windows)

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Open
    • Minor
    • Resolution: Unresolved
    • 2.4
    • None
    • Streams/Writers
    • None
    • Windows

    Description

      The use case:

      • log4j writes to the file using RollingFileAppender.
      • in parallel I need to read the file contents for later manipulation (storing it's contents elsewhere)

      Problem on windows:

      • I open FileInputStream for reading from file
      • when using IOUtils.copy(InputStream input, OutputStream output) exception is thrown:
         
        java.io.IOException: The process cannot access the file because another process has locked a portion of the file
        

      It would be great to have API enabling to copy contents of the locked file (on windows) to OutputStream.

      The method available in the API currently:

       
      FileUtils.copyFile(File input, OutputStream output)
      

      does the job, except for the files that are locked (in the windows environment) as they're currently written to.

      Some of the functionality is already in use in the: Tailer

      However (non-bloked) copying full contents is not provided.
      I'd need to retrieve a snapshot of the file.

      Not sure about the right API, but generally I see 2 options:

      • custom (File)InputSteam implementation or maybe
      • custom FileUtils.copyFile(File input, OutputStream output)

      Attachments

        Activity

          People

            Unassigned Unassigned
            typek_pb Peter Butkovic
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: