public int digits;
- public String extension;
-
- public BackupFilenameFilter(String base, String template, int digits,
- String extension)
+ public BackupFilenameFilter(String base, String template, int digits)
{
this.base = base;
this.template = template;
this.digits = digits;
- this.extension = extension;
}
@Override
public boolean accept(File dir, String filename)
{
- boolean ret = false;
try
{
File file = new File(
}
BackupFilenameParts bffp = new BackupFilenameParts(filename, base,
- template, digits, extension);
- ret = bffp.isBackupFile();
- return ret;
+ template, digits);
+ return bffp.isBackupFile();
}
}
-
-class BackupFilenameParts
-{
- String base;
-
- String templateStart;
-
- int num;
-
- int digits;
-
- String templateEnd;
-
- String extension;
-
- boolean isBackupFile;
-
- public BackupFilenameParts(File file, String base, String template, int digits,
- String extension)
- {
- this(file.getName(), base, template, digits, extension);
- }
-
- public BackupFilenameParts(String filename, String base, String template,
- int digits, String extension)
- {
- this.isBackupFile = false;
-
- // calculate minimum length of a backup filename
- int minlength = base.length() + template.length()
- - BackupFiles.NUM_PLACEHOLDER.length() + digits
- + extension.length();
-
- if (!(filename.startsWith(base) && filename.endsWith(extension)
- && filename.length() >= minlength))
- {
- // non-starter
- return;
- }
-
- int numcharstart = template.indexOf(BackupFiles.NUM_PLACEHOLDER);
- String templateStart = template;
- String templateEnd = "";
- if (numcharstart > -1)
- {
- templateStart = template.substring(0, numcharstart);
- templateEnd = template.substring(numcharstart + BackupFiles.NUM_PLACEHOLDER.length());
- }
-
- int startLength = base.length() + templateStart.length();
- int endLength = templateEnd.length() + extension.length();
- String numString = filename.substring(startLength,
- filename.length() - endLength);
-
- if (filename.length() >= startLength + digits + endLength
- && filename.startsWith(base + templateStart)
- && filename.endsWith(templateEnd + extension)
- && numString.matches("[0-9]+"))
- {
- this.base = base;
- this.templateStart = templateStart;
- this.num = Integer.parseInt(numString);
- this.digits = digits;
- this.templateStart = templateStart;
- this.templateEnd = templateEnd;
- this.isBackupFile = true;
- }
-
- }
-
- public static String getBackupFilename(int index, String base,
- String template,
- int digits, String extension)
- {
- String numString = String.format("%0" + digits + "d", index);
- String backupSuffix = template.replaceAll(BackupFiles.NUM_PLACEHOLDER,
- numString);
- String backupfilename = base + backupSuffix + extension;
- return backupfilename;
- }
-
- public boolean isBackupFile()
- {
- return this.isBackupFile;
- }
-
- public int indexNum()
- {
- return this.num;
- }
-}
\ No newline at end of file