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にキャストできないファイルのリストがあるためです。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

ApacheFileUtilsiterateFiles(File directory, String[] extensions, boolean recursive)のメソッドを確認することをお勧めします。拡張子で終わるファイルと実際のオブジェクトには違いがあります。.classClass

上記の関数を使用すると、拡張子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 に答える