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

Dirk Heinrichs commented on IO-721:
-----------------------------------

My use case is a simple Groovy script for copying files from one directory to 
another:
{code:java}
// Copy a directory to a destination directory

// Get dependencies
@GrabConfig(systemClassLoader=true)
@Grab('commons-io:commons-io:2.8.0')
@Grab('info.picocli:picocli-groovy:4.6.1')

// Import external modules
import groovy.cli.picocli.CliBuilder
import org.apache.commons.io.FileUtils
import org.apache.commons.io.filefilter.WildcardFileFilter

// Parse command line options
def cli = new CliBuilder(name: 'copyDir.groovy')
cli.h(type: Boolean, longOpt: 'help', usageHelp: true, required: false, 'Show 
usage information')
cli.f(type: File, longOpt: 'from', required: true, args: 1, 'The directory that 
should be copied (required)')
cli.p(type: String, longOpt: 'pattern', required: false, args: 1, defaultValue: 
'*', 'Glob pattern to specify which files to copy (optional, default: "*")')
cli.t(type: File, longOpt: 'to', required: true, args: 1, 'The destination 
directory (required)')
def opts = cli.parse(args)
opts || System.exit(1)
if(opts.h) {
  cli.usage()
  System.exit(0)
}

// Copy directory to its destination
println('Copying directory ' + opts.f + ' to ' + opts.t + ' using glob pattern 
"' + opts.p + '"...')
def glob = new WildcardFileFilter(opts.p)
FileUtils.copyDirectory(opts.f,opts.t, glob as FileFilter)
println('Directory copied.')
{code}
Executing this results in above error. Changing the version of commons-io to 
2.7 will make it work.

> FileUtils.copyDirectory() tries to set last modified on source dir after 
> update to 2.8.0
> ----------------------------------------------------------------------------------------
>
>                 Key: IO-721
>                 URL: https://issues.apache.org/jira/browse/IO-721
>             Project: Commons IO
>          Issue Type: Bug
>          Components: Utilities
>    Affects Versions: 2.8.0
>         Environment: Ubuntu 20.04 LTS
> Groovy 3.0.x
> Java 11 (from Ubuntu packages)
>            Reporter: Dirk Heinrichs
>            Priority: Major
>
> A simple
> {code:java}
> FileUtils.copyDirectory(source, dest, glob) {code}
> works fine when using Commons-IO 2.7, but fails with
> {code:java}
> Caught: java.io.IOException: Failed setLastModified on /path/to/source
> java.io.IOException: Failed setLastModified on /path/to/source
>         at 
> org.apache.commons.io.FileUtils.setLastModified(FileUtils.java:2561)
>         at 
> org.apache.commons.io.FileUtils.doCopyDirectory(FileUtils.java:1361)
>         at org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:733)
>         at org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:659)
>         at org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:606)
> {code}
> after update to 2.8.0. From reading the documentation, it's also my 
> understanding that "setLastModified()" should be executed on "dest" to set 
> the same modification time as "source", but *not* on "source".



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to