[
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)