当我使用以下代码运行类时:
public static void main(String[] args)
{
createDuplicateStructure("in", "out");
}
public static void createDuplicateStructure(String path_start, String path_result)
{
File start = new File(path_start);
File result = new File(path_result);
duplicateDirectoryStructure(start, result);
}
public static void duplicateDirectoryStructure(File start_dir, File result_dir)
{
//FileFilter used by listFiles(filter) - to make sure they are dirs
FileFilter dirs_only = new FileFilter()
{
public boolean accept(File file){ return file.isDirectory();}
};
File[] dir_contents = start_dir.listFiles(dirs_only);
for(File dir : dir_contents)
{
File duplicate = new File(result_dir.getPath(), dir.getName());
if(dir.mkdir())
{
duplicateDirectoryStructure(dir, duplicate);
}
else
{
System.out.println("ERROR: Unable to create dir! (" + duplicate.getPath() + ")");
}
}
}
我在控制台中得到了这个:
Error: Unable to create dir! (out/a)
Error: Unable to create dir! (out/a)
Error: Unable to create dir! (out/a)
目录“out”与.jar位于同一目录中。 目录“in”包含“a”,“b”和“c”目录(用于测试)。
为什么这不起作用?
谢谢!
答案 0 :(得分:5)
您应该将dir.mkdir()
替换为duplicate.mkdir()
,因为dir是现有的源目录。
答案 1 :(得分:3)
dir.mkdir()
仅返回true,实际创建了目录。尝试做
if(dir.mkdir() || dir.exists())
答案 2 :(得分:0)
该行
`if(dir.mkdir())`
正在尝试创建现有的目录结构
如果您将其更改为
if(duplicate.mkdir())
你遇到另一个问题,它试图在 out 下创建一个尚不存在的子目录。
因此将其更改为
if(duplicate.mkdirs())
将创建目录结构,或在开始循环之前创建out目录。