A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄喆 黑马帝   /  2011-12-14 01:43  /  2527 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄喆 于 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?

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

6 个回复

倒序浏览
不可以要报系统找不到指定的路径错误,因为
  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类型,所以不能返回

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
不可以。因为把"E:\\folder1\\folder2\\a.txt"封装成对象后,用createNewFile()创建文件,是在指定的目录中创建的,
这里的指定目录是最后一个“\\”前的内容,把最后一个“\\”后面的当做要创建的文件。
如果封装的是相对路径,则封装的内容是要创建的文件,会在当前目录中,创建该文件。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
李明 黑马帝 2011-12-14 09:38:16
板凳
直接创建肯定是不行的。
但是可以定义一个子类继承File类,通过复写createNewFile,然后把mkdirs和createNewFile都封装好,就可以一步到位了。

回复 使用道具 举报
File file = new File("E:\\folder1\\folder2\\a.txt");
          file.createNewFile();
这两行代码的返回类型不同,如果强行整合到一句里的话,将会报一个不兼容的类型错误。
回复 使用道具 举报
不可以,一般用mkdirs()创建的都是文件夹,而用createNewFile()创建的是文件,它们创建的都是唯一的,如果直接用createNewFile()创建,它是跟路径走的,如果先前没有创建文件夹,如folder2,系统会报出找不着指定路径,所以不行。
回复 使用道具 举报
黄喆 黑马帝 2011-12-14 14:57:55
7#
感谢各位解惑,这事终于不再纠结了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马