1 package org.locationtech.jtstest.util;
2 
3 import java.io.File;
4 import java.io.FilenameFilter;
5 import java.util.ArrayList;
6 import java.util.Collection;
7 import java.util.Iterator;
8 import java.util.List;
9 
10 public class FilesUtil {
11 
expand(Collection fileAndDirectoryNames)12   public static List expand(Collection fileAndDirectoryNames) {
13     List filenames = new ArrayList();
14     for (Iterator i = fileAndDirectoryNames.iterator(); i.hasNext();) {
15       String name = (String) i.next();
16       File file = new File(name);
17       if (file.isDirectory()) {
18         filenames.addAll(expand(file));
19       } else if (file.isFile()) {
20         filenames.add(name);
21       }
22     }
23     return filenames;
24   }
25 
expand(Collection fileAndDirectoryNames, String fileExtension)26   public static List expand(Collection fileAndDirectoryNames, String fileExtension) {
27     List filenames = new ArrayList();
28     for (Iterator i = fileAndDirectoryNames.iterator(); i.hasNext();) {
29       String name = (String) i.next();
30       File file = new File(name);
31       if (file.isDirectory()) {
32         filenames.addAll(expand(file, fileExtension));
33       } else if (file.isFile()) {
34         filenames.add(name);
35       }
36     }
37     return filenames;
38   }
39 
expand(File fileOrDir)40   public static List expand(File fileOrDir) {
41     List filenames = new ArrayList();
42     if (fileOrDir.isDirectory()) {
43       File[] files = fileOrDir.listFiles();
44       for (int i = 0; i < files.length; i++) {
45         if (files[i].isFile()) {
46           filenames.add(files[i].getPath());
47         }
48       }
49     }
50     else {
51       filenames.add(fileOrDir.getPath());
52     }
53     return filenames;
54   }
55 
expand(File fileOrDir, String fileExtension)56   public static List expand(File fileOrDir, String fileExtension) {
57     List filenames = new ArrayList();
58     if (fileOrDir.isDirectory()) {
59       File[] files = fileOrDir.listFiles(new FilenameFilter() {
60         @Override
61         public boolean accept(File dir, String name) {
62           return name.endsWith("." + fileExtension);
63         }
64       });
65       for (int i = 0; i < files.length; i++) {
66         if (files[i].isFile()) {
67           filenames.add(files[i].getPath());
68         }
69       }
70     } else {
71       filenames.add(fileOrDir.getPath());
72     }
73     return filenames;
74   }
75 
filenamesDeep(File directory)76 	public static Collection filenamesDeep(File directory) {
77 		Collection filenames = new ArrayList();
78 		File[] files = directory.listFiles();
79 		for (int i = 0; i < files.length; i++) {
80 			if (files[i].isFile()) {
81 				filenames.add(files[i].getPath());
82 			} else if (files[i].isDirectory()) {
83 				filenames.add(filenamesDeep(files[i]));
84 			}
85 		}
86 		return filenames;
87 	}
88 
toFile(List<String> filenames)89 	public static List<File> toFile(List<String> filenames) {
90 		List<File> files = new ArrayList<File>();
91 		for (String filename : filenames) {
92 			files.add(new File(filename));
93 		}
94 		return files;
95 	}
96 
97 }
98