我有以下代码从文件夹中检索文件列表,在我的for语句中我想比较它们以查看名称是否匹配
Class classFile = null;
// Retrieve the java file
final File javaFolder = new File(filePath);
// Retrieves all the class files
List<Class> classFiles = new ArrayList<>();
final File classFolder = new File(compileFile.getDirectoryForBin());
classFiles = retrieveFiles.listClassFilesForFolder(classFolder);
// compared the java files to the class files and add the correct files to the list
for (Class currentClassFile : classFiles) {.....}
我收到以下错误
java.lang.ClassCastException: java.io.File cannot be cast to java.lang.Class
at Java.OrganisingFiles.getClasses(OrganisingFiles.java:129)
这是因为我有一个无法在for循环中强制转换为Class的文件列表。有人知道如何将文件转换为类类型,或者将所有文件作为对象转换为更好,因为java.lang.Class
是java.lang.Object
的子类?
答案 0 :(得分:2)
更改这些行:
Class classFile = null;
List<Class> classFiles = new ArrayList<>();
for (Class currentClassFile : classFiles) {.....}
到此:
File classFile = null;
List<File> classFiles = new ArrayList<>();
for (File currentClassFile : classFiles) {.....}
类文件也是文件
答案 1 :(得分:1)
我建议您查看Apache iterateFiles(File directory, String[] extensions, boolean recursive)
中的FileUtils方法。以.class
扩展名结尾的文件与实际的Class
对象之间存在差异。
上面的函数应该允许你获得一个迭代器File
,它允许你迭代.class
扩展名的文件。
答案 2 :(得分:0)
1。 Class
类表示正在运行的java应用程序中的类,接口等。
2。现在使用listFile()
方法获取所有File Objects
,然后将它们存储在ArrayList<String>
这样的集合中并进行比较..
<强>例如强>
ArrayList<String> fnames = new ArrayList<String>();
File f = new File("d:\\Myfolder");
File[] fArr = f.listFiles();
for (File fN : fArr){
fnames.add(fN.getName());
}
现在你可以比较它们了.....