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

ars.file.disk.DiskQuery Maven / Gradle / Ivy

The newest version!
package ars.file.disk;

import java.io.File;
import java.io.FileFilter;
import java.util.List;
import java.util.LinkedList;

import ars.file.Describe;
import ars.file.query.AbstractQuery;
import ars.file.query.Queries;
import ars.file.query.Queries.Condition;

/**
 * 基于本地磁盘的文件查询集合实现
 *
 * @author wuyongqiang
 */
public class DiskQuery extends AbstractQuery {

    public DiskQuery(String workingDirectory) {
        super(workingDirectory);
    }

    @Override
    public List execute(String path, final boolean spread, final Condition... conditions) {
        final List describes = new LinkedList();
        (path == null ? new File(this.workingDirectory) : new File(this.workingDirectory, path))
            .listFiles(new FileFilter() {

                @Override
                public boolean accept(File file) {
                    Describe describe = new Describe(file);
                    describe.setPath(describe.getPath().substring(workingDirectory.length()));
                    if (Queries.isSatisfy(describe, conditions)) {
                        describes.add(describe);
                    }
                    if (spread && describe.isDirectory()) {
                        describes.addAll(execute(describe.getPath(), spread, conditions));
                    }
                    return false;
                }
            });
        return describes;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy