0

我有以下代码从文件夹中检索文件列表,在我的 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 的文件列表。有谁知道如何将 File 转换为 Class 类型,或者将所有文件作为对象转换为java.lang.Class的子类更好java.lang.Object

4

3 回答 3

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) {.....}

一个类文件也是一个文件

于 2012-08-09T15:25:59.203 回答
1

我建议您查看iterateFiles(File directory, String[] extensions, boolean recursive)Apache FileUtils中的方法。.class以扩展名结尾的文件与实际Class对象之间存在差异。

上面的函数应该允许你得到一个迭代器File,它允许你迭代具有.class扩展名的文件。

于 2012-08-09T15:25:21.797 回答
0

1. Class 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());

    }

现在你可以比较它们......

于 2012-08-09T15:28:21.633 回答