0

次のコードがあります。

ArrayList<String> File_name = new ArrayList<String>();

    try {
        //Reading an XML file, created above
        File fXmlFile = new File("C:\\Users\\V\\Documents\\diplwmatiki\\temp\\dokimi.xml");
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile);

        //optional, but recommended
        //read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
        doc.getDocumentElement().normalize();

        //Printing the attributes of the XML file
        System.out.println("\nRoot element :" + doc.getDocumentElement().getNodeName());

        NodeList nList = doc.getElementsByTagName("element");

        System.out.println("----------------------------");

        for (int temp = 0; temp < nList.getLength(); temp++) {

            Node nNode = nList.item(temp);

            System.out.println("\nCurrent Element :" + nNode.getNodeName());

            if (nNode.getNodeType() == Node.ELEMENT_NODE) {

                Element eElement = (Element) nNode;

                System.out.println("element : " + eElement.getAttribute("id"));
                System.out.println("File_name : " + eElement.getElementsByTagName("name").item(0).getTextContent());
                File_name.add(eElement.getElementsByTagName("name").item(0).getTextContent());

            }

        }


    }

        catch (Exception e) {
        e.printStackTrace();
        }

    System.out.println("\n");
    System.out.println(File_name); 
    System.out.println("\n");

    //Creating an list having all files of a directory

    String path = "C:\\Users\\V\\Documents\\diplwmatiki\\SFBs"; 

    String files;
    File folder = new File(path);
    File[] listOfFiles = folder.listFiles(); 

    for (int i = 0; i < listOfFiles.length; i++) 
    {

        if (listOfFiles[i].isFile()) 
        {
            files = listOfFiles[i].getName();
            System.out.println(files);
        }
    }

ArrayListsを使用して作成した 2 つを比較したいのfiles.retainAll(File_name);は、最初のリストに文字列として名前が存在する 2 番目のリストのファイルを保持する必要があるためです。とRetainAll();の 2 つの異なるタイプがあるため、 は機能しません。以下に示すようにフィルターを作成しようとしていますが、構文エラーが発生し、修正しようとすると機能しないようです。フィルターは次のとおりです。StringFile

String[] myFiles = folder.list(new FilenameFilter(){


        for (int i=0; i < listOfFiles.length; i++){


            public boolean accept;File folder; String fileName;{ 
                return fileName.startsWith(File_name[i]);
                System.out.println(folder);

            }


        });

最初と最後の行でトークンを挿入または削除するというエラーが発生します。retainAll()このフィルターでは使用しません。長文失礼しました&ありがとうございます!

4

2 に答える 2

1

を使用して、少なくとも2つの方法でそれを行うことができますFile.getName()

  1. リストを反復処理し、名前を2 番目のリストからの要素のString呼び出しgetName()と比較するだけです。File
  2. または、ファイル名から別のリストを作成し、別のリストを作成してからString使用ますretainAll()
于 2013-10-10T11:16:51.843 に答える