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

Elliotte Rusty Harold commented on IO-807:
------------------------------------------

I think you've accurately described what is currently happening. It isn't yet 
documented or tested in the code. 

In the case of FileUtils.copyDirectory(source, destination) I don't think one 
can or should assume that following links is the default. There's nothing in 
our docs that says that.

As to user expectations and least surprise, what do mv and cp do on Posix in 
this case? Same question for similar commands on Windows.

> FileUtils.requireExists does not take into account soft links
> -------------------------------------------------------------
>
>                 Key: IO-807
>                 URL: https://issues.apache.org/jira/browse/IO-807
>             Project: Commons IO
>          Issue Type: Improvement
>          Components: Utilities
>    Affects Versions: 2.13.0
>            Reporter: Jordi Sola
>            Priority: Major
>
> The current sources for `FileUtils.requireExists` and `FileUtils.
> requireExistsChecked` just check for the existence of the file, delegating to 
> the `File.exists` method:
> {code:java}
>         Objects.requireNonNull(file, fileParamName);
>         if (!file.exists()) {
>             throw ...
>         }
>         return file;{code}
> The default `file` implementation returns `false` if the file is a broken 
> symbolic link (that is, a symbolic link pointing to an non-existing file).
> While this implementation can be seen as correct most of the time, sometimes 
> we need to avoid following the link, and evaluate the existence of the link 
> itself.
> For example, when using `FileUtils#copyDirectory` with the 
> `LinkOption.NOFOLLOW_LINKS` option, it is expected that broken links are 
> copied (see JavaDocs for `java.nio.file.Files#copy`). Nonetheless, as 
> `FileUtils#requireFileIfExists` returns `false`, the file is just ignored.
>  
> One possible approach is relying in `java.nio.file.Files#isSymbolicLink` when 
> `LinkOption.NOFOLLOW_LINKS` options is provided.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to