[ 
https://issues.apache.org/jira/browse/IO-175?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Niall Pemberton resolved IO-175.
--------------------------------

       Resolution: Fixed
    Fix Version/s:     (was: 2.x)
                   2.0
         Assignee: Niall Pemberton

Thanks for pointing this out, I have limited the transfer to 50MB chunks and 
explicitly closed the streams now:

http://svn.apache.org/viewvc?view=rev&revision=723199

> IOUtils.doCopyFile() issues with very large files and closing file input 
> streams
> --------------------------------------------------------------------------------
>
>                 Key: IO-175
>                 URL: https://issues.apache.org/jira/browse/IO-175
>             Project: Commons IO
>          Issue Type: Bug
>          Components: Utilities
>            Reporter: David Sitsky
>            Assignee: Niall Pemberton
>            Priority: Minor
>             Fix For: 2.0
>
>
> I've noticed the code in 
> http://svn.apache.org/repos/asf/commons/proper/io/trunk/src/java/org/apache/commons/io/FileUtils.java
>  for doCopyFile() contains:
> output.transferFrom(input, 0, input.size());
> I know from experience (I had code that did this previously) this will not 
> work on large files, at least under Windows.  By default, the transferFrom() 
> method will try to create a single memory map equal to the size of the input. 
>  If you are running a 32-bit process, and are trying to copy a file gigabytes 
> in size, this will fail as you won't have enough virtual address space to 
> create the memory map.  We had to use transferFrom() in smaller chunk sizes 
> to work around this.
> Also I believe in the code of this method, the file input streams need to be 
> closed explicitly, since closing the channel objects that are derived from 
> them will not close any resources held by the file input stream objects 
> themselves.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to