[
https://issues.apache.org/jira/browse/IO-807?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17801613#comment-17801613
]
Elliotte Rusty Harold edited comment on IO-807 at 1/1/24 9:42 PM:
------------------------------------------------------------------
Slightly edgier edge case to also consider: move (not copy) a directory Foo
that contains both bar.txt and linkttobar.txt, the latter being a symlink to
the former.
Should the move function try to update linktobar.txt to point to the moved
version of bar.txt?
Or suppose we copy instead of move. Should the copied linktobar.txt point to
the original bar.txt or the moved bar.txt?
was (Author: elharo):
Slightly edgier edge case to also consider: move (not copy) a direct Foo that
contains both bar.txt and linkttobar.txt, the latter being a symlink to the
former.
Should the move function try to update linktobar.txt to point to the moved
version of bar.txt?
Or suppose we copy instead of move. Should the copied linktobar.txt point to
the original bar.txt or the moved bar.txt?
> 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)