2 package saccubus.converter.filegetter;
5 import java.io.FilenameFilter;
6 import java.util.logging.Level;
7 import java.util.logging.Logger;
15 private final boolean autoFileName;
16 private final File initFile;
17 private final String prefix;
18 private final String title;
19 private final String[] suffixes;
21 FileLocator(boolean autoFileName, File initFile, String prefix, String title, String... suffixes) {
22 this.autoFileName = autoFileName;
23 this.initFile = initFile;
26 this.suffixes = suffixes;
30 * コンストラクタで指定した条件でファイルを検索する。
31 * autoFileNameがfalseの場合、直接名前指定であるため指定されたファイルをそのまま返す。
32 * autoFileNameがtrueの場合、initFileディレクトリにprefixで始まりsuffixで終わるファイルが存在するか検索し
34 * このファイルも無い場合、指定されたパラメータに従ったファイル名を返す。
35 * このとき拡張子(suffixes)が複数指定されていた場合は最初のものを返す。
36 * @return 所望のファイル。ファイルは存在する場合もあり、存在しない場合もあることに注意。
39 if (!isAutoNaming()) {
42 File res = searchFile();
46 return new File(initFile, prefix + title + suffixes[0]);
50 private File searchFile() {
51 FilenameFilter filter = new FilenameFilter() {
54 public boolean accept(File dir, String name) {
55 if (name.startsWith(prefix)) {
56 for (String suffix : suffixes) {
57 if (name.endsWith(suffix)) {
65 File[] res = initFile.listFiles(filter);
66 if (res == null || res.length == 0) {
70 final String message = "複数の候補ファイルがヒットしました. 意図しないファイルが選択されている可能性があります:"
72 Logger.getLogger(FileLocator.class.getName()).log(Level.WARNING, message);
77 protected boolean isAutoNaming() {
81 protected final boolean getAutoFileName() {