黑马程序员技术交流社区

标题: File可以一次建立文件夹和文件么? [打印本页]

作者: 黄喆    时间: 2011-12-14 01:43
标题: File可以一次建立文件夹和文件么?
本帖最后由 黄喆 于 2011-12-14 14:58 编辑

l例如:

      File d =new File("E:\\folder1\\folder2");
           d.mkdirs();
      File file = new File("E:\\folder1\\folder2\\a.txt");
          file.createNewFile();

能不能整合成一句,一步到位,不通过d.mkdirs()建立文件夹,而直接建立E:\\folder1\\folder2\\a.txt?
作者: 马伟奇    时间: 2011-12-14 09:10
不可以要报系统找不到指定的路径错误,因为
  File file = new File("E:\\folder1\\folder2\\a.txt");
          file.createNewFile();
这个代码是要创建文件夹,然后把a.txt放入到指定的文件夹,如果没有
File d =new File("E:\\folder1\\folder2");
d.mkdirs();
这个代码上哪里去找文件夹呢,如果你非要创建a.txt文件想一步到位的话可以这样。
File file = new File("E:\\a.txt");
file.createNewFile();
如果你是想一步到位的话,不可以的,因为   file.createNewFile();这个代码返回的是布尔类型,  
File file = new File("E:\\folder1\\folder2\\a.txt");而这个代码返回的是File类型,所以不能返回
作者: 赵燕燕    时间: 2011-12-14 09:17
不可以。因为把"E:\\folder1\\folder2\\a.txt"封装成对象后,用createNewFile()创建文件,是在指定的目录中创建的,
这里的指定目录是最后一个“\\”前的内容,把最后一个“\\”后面的当做要创建的文件。
如果封装的是相对路径,则封装的内容是要创建的文件,会在当前目录中,创建该文件。
作者: 李明    时间: 2011-12-14 09:38
直接创建肯定是不行的。
但是可以定义一个子类继承File类,通过复写createNewFile,然后把mkdirs和createNewFile都封装好,就可以一步到位了。


作者: 黑马巩伟伟    时间: 2011-12-14 13:04
File file = new File("E:\\folder1\\folder2\\a.txt");
          file.createNewFile();
这两行代码的返回类型不同,如果强行整合到一句里的话,将会报一个不兼容的类型错误。

作者: 杨银川    时间: 2011-12-14 14:28
不可以,一般用mkdirs()创建的都是文件夹,而用createNewFile()创建的是文件,它们创建的都是唯一的,如果直接用createNewFile()创建,它是跟路径走的,如果先前没有创建文件夹,如folder2,系统会报出找不着指定路径,所以不行。
作者: 黄喆    时间: 2011-12-14 14:57
感谢各位解惑,这事终于不再纠结了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2