[
https://issues.apache.org/jira/browse/IO-807?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17791855#comment-17791855
]
Miguel Munoz commented on IO-807:
---------------------------------
It seems to me the best approach would be to leave this method alone, and add a
method with this signature:
FileUtils.requireExists(File file, String fileParamName, LinkOption...
linkOptions)
This method would defer to Files.exists(File, LinkOption...) instead of
File.exists(File). We would have to specify the behavior: If
LinkOption.NO_FOLLOW_LINKS is specified, the method would ensure the link
itself exists. Otherwise it would follow the link to see if that exists.
However sound this approach would be, it suggests we should do the same for
most of the requireXxxExists() methods, which would be a lot of work. (If
somebody has a better idea, please speak up.)
> 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)