I’m not sure if I understand if the usefulness of the behaviour in all versions 
up to and including 2.17.0 is a bug unless something else is happening which 
I’m unaware of.

Assuming the ability to detect a path / network url is no longer valid has gone 
it begs the question- is there some other mechanism within commons io which can 
be used to detect the same issue.

The application which I develop runs as a middleware solution and as a service. 
When a network url is no longer available I generate an alert via an email.

My code simply loops around check for the presence of files in a folder 
constantly.

With the new behaviour I won’t be able to detect and report on a failure of 
this kind.

Thanks 

Dave


> On 30 Dec 2024, at 19:49, Gary D. Gregory <ggreg...@apache.org> wrote:
> 
> It looks like this change with by design for 
> https://issues.apache.org/jira/browse/IO-856
> 
> Gary
> 
>> On 2024/12/30 17:54:17 "Gary D. Gregory" wrote:
>> Hm, we'll have to look into that one. In the meantime, I added
>> 
>> org.apache.commons.io.FileUtilsListFilesTest.testListFilesMissing()
>> 
>> which asserts the current behavior in git master.
>> 
>> TY,
>> Gary
>> 
>>> On 2024/12/30 17:00:17 Dave Garratt wrote:
>>> 
>>> I have recently tried updating from Commons IO 2.16.1 to Commons IO 2.18.0
>>> 
>>> My java program constantly polls a folder for the presence of files. 
>>> Normally this will be a remote folder on a windows share.
>>> 
>>> In Commons IO 2.16.1 when I use FileUtils.listFiles it would trigger an 
>>> exception if the folder being polled became unavailable and I would use 
>>> this to trigger an action.
>>> 
>>> In Commons IO 2.18.0 the error does not occur.
>>> 
>>> I have created a very simple test program to illustrate this.
>>> 
>>> Running this code with Commons IO 2.16.1 and passing an invalid (non 
>>> existent) path to it gives me the following exception (which in my case is 
>>> desirable):
>>> 
>>> import java.io.File;
>>> 
>>> import org.apache.commons.io.FileUtils;
>>> 
>>> public class Test2161
>>> {
>>> 
>>>    public static void main(String[] args)
>>>    {
>>>        File dir = new File("/Users/dave/Downloads/nonexistent");
>>>        
>>>        try
>>>        {
>>>            FileUtils.listFiles(dir, args, false);
>>>        }
>>>        catch (Exception ex)
>>>        {
>>>            System.out.println(ex.getMessage());
>>>            ex.printStackTrace();
>>>        }
>>>    }
>>> }
>>> 
>>> java.nio.file.NoSuchFileException: /Users/dave/Downloads/nonexistent
>>> java.io.UncheckedIOException: java.nio.file.NoSuchFileException: 
>>> /Users/dave/Downloads/nonexistent
>>>    at org.apache.commons.io.function.Uncheck.wrap(Uncheck.java:339)
>>>    at org.apache.commons.io.function.Uncheck.get(Uncheck.java:199)
>>>    at org.apache.commons.io.FileUtils.listFiles(FileUtils.java:2313)
>>>    at Test2161.main(Test2161.java:14)
>>> Caused by: java.nio.file.NoSuchFileException: 
>>> /Users/dave/Downloads/nonexistent
>>>    at 
>>> java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
>>>    at 
>>> java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
>>>    at 
>>> java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
>>>    at 
>>> java.base/sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
>>>    at 
>>> java.base/sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:148)
>>>    at java.base/java.nio.file.Files.readAttributes(Files.java:1851)
>>>    at 
>>> java.base/java.nio.file.FileTreeWalker.getAttributes(FileTreeWalker.java:226)
>>>    at java.base/java.nio.file.FileTreeWalker.visit(FileTreeWalker.java:277)
>>>    at java.base/java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:323)
>>>    at 
>>> java.base/java.nio.file.FileTreeIterator.<init>(FileTreeIterator.java:71)
>>>    at java.base/java.nio.file.Files.walk(Files.java:3918)
>>>    at org.apache.commons.io.file.PathUtils.walk(PathUtils.java:1847)
>>>    at org.apache.commons.io.FileUtils.streamFiles(FileUtils.java:2952)
>>>    at 
>>> org.apache.commons.io.FileUtils.lambda$listFiles$10(FileUtils.java:2313)
>>>    at org.apache.commons.io.function.Uncheck.get(Uncheck.java:197)
>>>    ... 2 more
>>> 
>>> 
>>> 
>>> If however I run the same code with Commons IO 2.18.0 I get nothing, no 
>>> indication that the path is not valid which make it difficult to determine 
>>> if the folder is empty or the remote file server is shutdown.
>>> 
>>> Am I supposed to use a different way to accomplish the same error condition 
>>> now ?
>>> 
>>> Thanks
>>> 
>>> Dave
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
>>> For additional commands, e-mail: user-h...@commons.apache.org
>>> 
>>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
>> For additional commands, e-mail: user-h...@commons.apache.org
>> 
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
> For additional commands, e-mail: user-h...@commons.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
For additional commands, e-mail: user-h...@commons.apache.org

Reply via email to