[ 
https://issues.apache.org/jira/browse/IO-271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13030697#comment-13030697
 ] 

Stephen Kestle commented on IO-271:
-----------------------------------

Did I mention I'm trying to do an automatic upgrade on a legacy application, 
and this is the first backup of the message archive (initially thought to be 
logs)? (I was using ant's copy except that it's horrifically slow and bloated - 
it can use 100% of a cpu copying no files and run out of memory in the almost 
the same time that copyDirectory finishes!).

So yeah, you can close the ticket... however, on Windows and Linux, the only 
native operation is {{list()}}, so I see no performance loss iterating over 
that array at copy time instead of in the {{listFiles()}} method

> FileUtils.copyDirectory should be able to handle arbitrary number of files
> --------------------------------------------------------------------------
>
>                 Key: IO-271
>                 URL: https://issues.apache.org/jira/browse/IO-271
>             Project: Commons IO
>          Issue Type: Improvement
>          Components: Utilities
>    Affects Versions: 2.0.1
>            Reporter: Stephen Kestle
>            Priority: Minor
>
> File.listFiles() uses up to a bit over 2 times as much memory as File.list(). 
>  The latter should be used in doCopyDirectory where there is no filter 
> specified.
> This memory usage is a problem when copying directories with hundreds of 
> thousands of files.
> I was also thinking of the option of implementing a file filter (that could 
> be composed with the inputted filter) that would batch the file copy 
> operation; copy the first 10000 (that match), then the next 10000 etc etc.
> Because of the lack of ordering consistency (between runs) of 
> File.listFiles(), there would need to be a final file filter that would 
> accept files that have not successfully been copied.
> I'm primarily concerned about copying into an empty directory (I validate 
> this beforehand), but for general operation where it's a merge, the 
> modification date re-writing should only be done in the final run of copies 
> so that while batching occurs (and indeed the final "missed" filtering) files 
> do not get copied if they have been modified after the start time. (I presume 
> that I'm reading FileUtils correctly in that it overrides files...)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to