All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hudson.util.FileVisitor Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 *
 * Copyright (c) 2004-2010 Oracle Corporation.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *
 *
 *******************************************************************************/ 

package hudson.util;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.io.Serializable;

/**
 * Visits files in a directory recursively.
 *
 * @since 1.343
 * @see DirScanner
 */
public abstract class FileVisitor {

    /**
     * Called for each file and directory that matches the criteria implied by
     * {@link DirScanner}
     *
     * @param f Either a file or a directory.
     * @param relativePath The file/directory name in question
     */
    public abstract void visit(File f, String relativePath) throws IOException;

    /**
     * Some visitors can handle symlinks as symlinks. Those visitors should
     * implement this method to provide a different handling for symlink. 

* This method is invoked by those {@link DirScanner}s that can handle * symlinks as symlinks (not every {@link DirScanner}s are capable of doing * that, as proper symlink handling requires letting visitors decide whether * or not to descend into a symlink directory. */ public void visitSymlink(File link, String target, String relativePath) throws IOException { visit(link, relativePath); } /** * Some visitors can handle symlinks as symlinks. Those visitors should * implement this method and return true to have callers invoke * {@link #visitSymlink(File, String, String)} */ public boolean understandsSymlink() { return false; } /** * Decorates a visitor by a given filter. */ public final FileVisitor with(FileFilter f) { if (f == null) { return this; } return new FilterFileVisitor(f, this); } private static final class FilterFileVisitor extends FileVisitor implements Serializable { private final FileFilter filter; private final FileVisitor visitor; private FilterFileVisitor(FileFilter filter, FileVisitor visitor) { this.filter = filter != null ? filter : PASS_THROUGH; this.visitor = visitor; } public void visit(File f, String relativePath) throws IOException { if (f.isDirectory() || filter.accept(f)) { visitor.visit(f, relativePath); } } private static final FileFilter PASS_THROUGH = new FileFilter() { public boolean accept(File pathname) { return true; } }; private static final long serialVersionUID = 1L; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy