フォルダを指定すると、その中のディレクトリとファイルを別々に配列で取得する。
public class MyDirectory {
private File targetDir = null;
private final ArrayList< MyNumbersInString> mDirNameList = new ArrayList<>();
private final ArrayList< MyNumbersInString> mFileNameList = new ArrayList<>();
private int dirIndexNo = 0, fileIndexNo = 0;
public MyDirectory( File dir ) {
if ( dir == null || !dir.exists() || !dir.isDirectory()) return;
targetDir = dir;
initMyDirectory(dir);
}
private void initMyDirectory( File dir ) {
String name = dir.getPath();
File[] files = new File( name ).listFiles();
for (File file : files) {
if (file.isDirectory()) {
mDirNameList.add(new MyNumbersInString(file.getName()));
} else if (file.isFile()) {
name = file.getName();
name.toLowerCase(); //小文字に変換
if (name.endsWith(".jpg") || name.endsWith(".png")) { //画像ファイル選択
mFileNameList.add(new MyNumbersInString(file.getName()));
}
}
}
Collections.sort(
mDirNameList, new Comparator< MyNumbersInString>() {
@Override
public int compare(MyNumbersInString mn1, MyNumbersInString mn2) {
return mn1.getName2().compareTo(mn2.getName2());
}
}
);
Collections.sort(
mFileNameList, new Comparator< MyNumbersInString>() {
@Override
public int compare(MyNumbersInString mn1, MyNumbersInString mn2) {
return mn1.getName2().compareTo(mn2.getName2());
}
}
);
}
public File getTargetDir() {
return targetDir;
}
public boolean resetTargetDir( File dir ) {
if ( dir == null || !dir.exists() || !dir.isDirectory() ) return false;
if ( targetDir != null ) close();
targetDir = dir;
initMyDirectory(dir);
return true;
}
public String getDirName() {
return mDirNameList.get(dirIndexNo).getName();
}
public String getDirName(int no) {
if ( no < 0 || no >= mDirNameList.size() )
return null;
return mDirNameList.get(no).getName();
}
public String getNextDirName() {
if ( ++dirIndexNo >= mDirNameList.size() ) {
dirIndexNo--;
return null;
}
return mDirNameList.get(dirIndexNo).getName();
}
public String getPrevDirName() {
if ( --dirIndexNo < 0 ) {
dirIndexNo = 0;
return null;
}
return mDirNameList.get(dirIndexNo).getName();
}
public boolean setDirIndexNo( int no ) {
if ( no < 0 || no >= mDirNameList.size() )
return false;
dirIndexNo = no;
return true;
}
public int getDirListSize() {
return mDirNameList.size();
}
public String getFileName() {
return mFileNameList.get(fileIndexNo).getName();
}
public String getFileName( int no ) {
if ( no < 0 || no >= mFileNameList.size() )
return null;
return mFileNameList.get(no).getName();
}
public String getNextFileName() {
if ( ++fileIndexNo >= mFileNameList.size() ) {
fileIndexNo--;
return null;
}
return mFileNameList.get(fileIndexNo).getName();
}
public String getPrevFileName() {
if (--fileIndexNo < 0) {
fileIndexNo = 0;
return null;
}
return mFileNameList.get(fileIndexNo).getName();
}
public boolean setFileIndexNo( int no ) {
if ( no < 0 || no >= mFileNameList.size() )
return false;
fileIndexNo = no;
return true;
}
public int getFileListSize() {
return mFileNameList.size();
}
public void close() {
targetDir = null;
mDirNameList.clear();
mFileNameList.clear();
}
}