Jordi Sola created IO-807:
-----------------------------

             Summary: 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


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