如何将java.io.File转换为java.lang.Class

时间:2012-08-09 15:21:27

标签: java

我有以下代码从文件夹中检索文件列表,在我的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.Classjava.lang.Object的子类?

3 个答案:

答案 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());

    }

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