我正在尝试从两个文件夹中打印文件名,这段代码会编译但不会提供任何关于运行它的文件。
这里的主要目标是在两个文件夹中找到常用名称文件,我已将文件名存储在两个数组中,然后我将应用排序并找到常用文件。
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
}
}
}
}
答案 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