小弟初学Java,打算写一个递归访问目录的程序,访问目录下所有文件,并按相同的结构转存至新目录,但是总是不能mkdirs成功,请高人指点一二,先谢过了:
我从eclipse拷过来,似乎格式全错了。。。
import java.io.*;
public class RecurDirVisit {
private static void usage() {
System.err
.println( "Usage:RecurDirVisit path1 path2\n "
+ "dosomething for all files in path1 and write to path2\n "
+ "Usage:RecurDirVisit path\n "
+ "dosomething for all files in path and save to the same file ");
System.exit(1);
}
private static void dosomething() {
// do nothing
}
private static void recurV(String dsour, String ddest) {
File fsour = new File(dsour), fdest = new File(ddest);
dsour = fsour.getAbsolutePath();
ddest = fdest.getAbsolutePath();
if (fsour.isDirectory()) {
File[] fList = fsour.listFiles();
for (int i = 0; i < fList.length; i++) {
recurV(fList[i].getPath(), ddest + '\\ ' + fList[i].getName());
}
} else {
if (!fdest.getParentFile().exists())
if (fdest.mkdirs() == false) {//在此mkdirs的结果是false,why???
System.exit(1);
System.out.println(fdest.getParent());
}
try {
BufferedReader in = new BufferedReader(new FileReader(fsour));
PrintWriter out = new PrintWriter(new BufferedWriter(
new FileWriter(fdest)));
String s1;
while ((s1 = in.readLine()) != null) {
System.out.println(s1);
dosomething();// do something for source file
out.println(s1);
}
out.close();
} catch (IOException e) {
System.err.println( "IOException! ");
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
if (args.length != 2)
usage();
recurV(args[0], args[1]);
}
}
------解决方案--------------------
你好好排排版面,这么乱!
------解决方案--------------------
if (fdest.mkdirs() == false)这行逻辑有问题吧.如果fdest.mkdirs() == false这个表达式为真,也就是说fdest.mkdirs()是== false 则System.exit(1);而你现在说它返回false也就是说fdest.mkdirs()这个函数返回true,既然有目录了当然它就不会再建了.
------解决方案--------------------
fdest的爹都不存在,怎么能创建fdest呢...