📄 filewalker.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: FileWalker.java
package org.pf.file;
import java.io.File;
import java.io.FilenameFilter;
import org.pf.text.StringUtil;
// Referenced classes of package org.pf.file:
// ExtendedFileFilter, FileHandler
public class FileWalker
{
public static final char PATTERN_SEPARATOR_CHAR = 59;
public static final String PATTERN_SEPARATOR = ";";
private FileHandler fileHandler;
private boolean goOn;
private Character digitWildcard;
protected FileHandler getFileHandler()
{
return fileHandler;
}
protected void setFileHandler(FileHandler newValue)
{
fileHandler = newValue;
}
protected boolean getGoOn()
{
return goOn;
}
protected void setGoOn(boolean newValue)
{
goOn = newValue;
}
protected Character getDigitWildcard()
{
return digitWildcard;
}
protected void setDigitWildcard(Character newValue)
{
digitWildcard = newValue;
}
public FileWalker(FileHandler handler)
{
fileHandler = null;
goOn = true;
digitWildcard = null;
setFileHandler(handler);
}
public FileWalker(FileHandler handler, char digitWildcard)
{
this(handler);
setDigitWildcardChar(digitWildcard);
}
public long walkThrough(String dir, String pattern, boolean recursive)
{
ExtendedFileFilter filter = null;
String patterns[] = null;
setGoOn(true);
filter = new ExtendedFileFilter();
patterns = extractPatterns(pattern);
for (int i = 0; i < patterns.length; i++)
{
String strPattern = patterns[i];
if (hasDigitWildcard())
filter.addPattern(strPattern, true, getDigitWildcardChar());
else
filter.addPattern(strPattern, true);
}
if (recursive)
filter.alwaysIncludeDirectories();
else
filter.alwaysExcludeDirectories();
return walkThrough(dir, ((FilenameFilter) (filter)), recursive);
}
public void setDigitWildcardChar(char digitWildcard)
{
if (digitWildcard <= 0)
setDigitWildcard(null);
else
setDigitWildcard(new Character(digitWildcard));
}
protected long walkThrough(String dir, FilenameFilter filter, boolean recursive)
{
long counter = 0L;
File directory = null;
File file = null;
File files[] = null;
int index = 0;
directory = new File(dir);
files = directory.listFiles(filter);
if (files == null)
return counter;
setGoOn(getFileHandler().directoryStart(directory, files.length));
if (!getGoOn())
return counter;
index = 0;
do
{
if (index >= files.length)
break;
file = files[index];
if (file.isDirectory())
{
if (recursive)
counter += walkThrough(file.getPath(), filter, recursive);
} else
{
setGoOn(getFileHandler().handleFile(file));
counter++;
}
if (!getGoOn())
break;
index++;
} while (true);
setGoOn(getFileHandler().directoryEnd(directory));
return counter;
}
protected String[] extractPatterns(String pattern)
{
return StringUtil.current().parts(pattern, ";");
}
protected char getDigitWildcardChar()
{
if (hasDigitWildcard())
return getDigitWildcard().charValue();
else
return '\0';
}
protected boolean hasDigitWildcard()
{
return getDigitWildcard() != null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -