Java文件名打印

时间:2013-10-31 18:32:15

标签: java

我正在尝试从两个文件夹中打印文件名,这段代码会编译但不会提供任何关于运行它的文件。

这里的主要目标是在两个文件夹中找到常用名称文件,我已将文件名存储在两个数组中,然后我将应用排序并找到常用文件。

 package javaapplication13;

    import java.io.File;
    import java.util.*;

    public class ListFiles1 

    {

        public static void main(String[] args) 
        {

            String path1 = "C:/"; 
            String path2 = "D:/"; 

            File folder1 = new File(path1);
            File folder2 = new File(path2);

            String[] f1=folder1.list();

            File[] listOfFiles1 = folder1.listFiles(); 
            File[] listOfFiles2 = folder2.listFiles(); 

            ArrayList<String> fileNames1 = new ArrayList<>();
            ArrayList<String> fileNames2 = new ArrayList<>();

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

                if (listOfFiles1[i].isFile()) 
                {
                    fileNames1.add(listOfFiles1[i].getName());//wow
                    System.out.println(listOfFiles1[i].getName());
                }

            }

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

                if (listOfFiles2[i].isFile()) 
                {
                    fileNames2.add(listOfFiles2[i].getName());//seriously wow
                }
            }

        }
    }

2 个答案:

答案 0 :(得分:0)

  

这里的主要目标是在两个文件夹中找到常用名称文件,我已将文件名存储在两个数组中,然后我将应用排序并找到常用文件。

我不喜欢这两个阵列的东西。此外,重复文件应该具有相同的长度和相同的名称。如果你真的想要名字,你可以删除条件的f.length() == temp.length()部分。

private static void findDups(String dirName1, String dirName2){
    File dir1 = new File(dirName1);
    File dir2 = new File(dirName2);
    Map<String,File> fileMap = new HashMap<String,File>();
    File[] files = dir1.listFiles();
    for(File f : files){
        fileMap.put(f.getName(),f);
    }

    files = dir2.listFiles();
    StringBuilder sb = new StringBuilder(100);

    for(File f : files){
        File temp = fileMap.get(f.getName());
        if(temp != null && f.length() == temp.length()){
            sb.append("Found duplicate files:  ")
              .append(temp.getAbsolutePath())
              .append(" and ")
              .append(f.getAbsolutePath());
            System.out.println(sb);
            sb.delete(0,sb.length());
        }
    }
}

答案 1 :(得分:0)

遍历你所拥有的ArrayLists。每个ArrayList都包含文件名。你需要一个嵌套循环(一个循环内的循环)。在嵌套循环的核心中,您希望对每个ArrayList当前位置进行比较。您可以使用.equals()方法。伪代码类似于:

//create a new ArrayList called "commonNameList"
// loop through fileNames1 with position variable "i"
    //loop through fileNames2 with position variable "j"
        //tempFileName1  = fileNames1.get(i)
        //tempFileName2 = fileNames2.get(j)
        //if tempFileName1  equals tempFileName2
            //commonNameList.add(tempFileName1)

检查这些:

http://mathbits.com/MathBits/Java/Looping/NestedFor.htm

Simple nested for loop example

How do I compare strings in Java?