Github user markap14 commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/3033#discussion_r227081243
  
    --- Diff: 
nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/GetFile.java
 ---
    @@ -308,32 +321,45 @@ public boolean accept(final File file) {
             };
         }
     
    -    private Set<File> performListing(final File directory, final 
FileFilter filter, final boolean recurseSubdirectories) {
    -        Path p = directory.toPath();
    -        if (!Files.isWritable(p) || !Files.isReadable(p)) {
    -            throw new IllegalStateException("Directory '" + directory + "' 
does not have sufficient permissions (i.e., not writable and readable)");
    -        }
    -        final Set<File> queue = new HashSet<>();
    -        if (!directory.exists()) {
    -            return queue;
    -        }
    -
    -        final File[] children = directory.listFiles();
    -        if (children == null) {
    -            return queue;
    -        }
    -
    -        for (final File child : children) {
    -            if (child.isDirectory()) {
    +    private Set<File> performListing(final File directory, final 
FileFilter filter, final boolean recurseSubdirectories, final int batchSize) {
    +        try {
    +            if (directoryStream == null || !this.fileIterator.hasNext()) {
    +                final Path p = directory.toPath();
    +                if (!Files.isReadable(p) || !Files.isWritable(p)) {
    +                    throw new IllegalStateException("Directory '" + 
directory + "' does not have sufficient permissions (i.e., not writable and 
readable)");
    +                }
    +                
    +                if (!directory.exists()) {
    +                    return Collections.emptySet();
    +                }
    +                
    +                Stream<Path> listStream;
                     if (recurseSubdirectories) {
    -                    queue.addAll(performListing(child, filter, 
recurseSubdirectories));
    +                    listStream = Files.walk(p);
    --- End diff --
    
    That was ListFile. IIRC, we did re-introduce it. The issue the first time 
was that it was not following links, but that was due to needing to explicitly 
send in a flag when performing the listing to follow links - the NIO.2 API 
didn't follow symlinks by default, while the IO API did.


---

Reply via email to