日期:2014-05-20  浏览次数:20822 次

File 类的getParentFile()方法
String fileName="new .txt";
String dir="mydir1/mydir2";
File f=new File(dir,fileName);
当我直接
f.mkdirs();后
new .txt也变成了目录
而f.getParentFile().mkdirs();
只有mydir1/mydir2的目录
这个是为什么
------解决方案--------------------
首先,你不要被File给迷惑了,中文翻译是个文件的意思,但Java中它表示的是“文件和目录路径名的抽象表示形式”,也就是说File即可以是文件,也可以是目录路径名;

其次,File f=new File(dir,fileName); 这根据dir路径名字符串fileName路径名字符串创建一个新 File实例,也就是说你认为fileName表示的是个文件, 而Java认为fileName可以是个文件和目录路径;

所以这样调用f.mkdirs(),就会创建f表示的路径名指定的目录(包括dir和fileName),因为你明确的要创建目录;
你在f.getParentFile().mkdirs()后,再f.createNewFile(),这样Java才知道你要创建一个fileName的文件;
------解决方案--------------------
f.mkdirs();是以f为基准建立也就是说 f目录前面的都应该是目录,包括他,以此类推:f.getParent().mkdirs()是以 f.getParent()为基准建立,包括f.getParent()(这里可以把f.getParent()看做是第一种情况中的 f )。就这样