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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢洋 高级黑马   /  2013-3-5 11:05  /  1198 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谢洋 于 2013-3-6 13:06 编辑

public class FileTest {

        public static void main(String[] args) throws Exception {
                File file = new File("myfile\\file.txt");
                file.mkdir();
                System.out.println(file.isFile());//false
                System.out.println(file.isDirectory());//false 为什么?,下面还可以打印出结果
                System.out.println(file.getName());
                System.out.println(file.getPath());//myfile\file.txt
                System.out.println(file.getParent());//myfile
                System.out.println(file.getAbsolutePath());//D:\eclips\works1\mytest\myfile\file.txt
        }
}
为什么mkdir后的myfile\\file.txt不是目录,但下面还能打印出目录路径,名字等??

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
改为 System.out.println(file.mkdirs());//ture
        file.mkdir();//false
创建此抽象路径名指定的目录。
也就说 这个目录不存在
boolean mkdirs()
          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。


       System.out.println(file.isDirectory());//false 为什么?,下面还可以打印出结果
是存在于内存中的对象 还没有 执行在硬盘中操作

评分

参与人数 1黑马币 +6 收起 理由
黄玉昆 + 6 赞一个!

查看全部评分

回复 使用道具 举报
我拿你的代码运行了一下,System.out.println(file.isDirectory());打印结果是true;相当于计算机把“myfile\file.txt”当作目录名了

如果把myfile\\file.txt 改成myfile/file.txt 的话才是打印出 fasle(这么说的话,你应该是在windows环境了,就是相当于我的这种情况)

为什么你的打印出fasle ? 我想:目录名中是不能出现“.”这个符号的

之所以System.out.println(file.getAbsolutePath());可以打印出来,那是因为文件名也是路径的一部分啊

评分

参与人数 1黑马币 +6 收起 理由
黄玉昆 + 6 淡定

查看全部评分

回复 使用道具 举报
本帖最后由 全超 于 2013-3-6 00:54 编辑

不知能否帮到忙。。
public class FileTest        {        
                public static void main(String[] args) throws Exception
                        {
                File file = new File("myfile\\file.txt");//File对象中封装的是一个二级目录因为有“\\”
                file.mkdir();//首先这一步就是false(创建失败),mkdir()这个方法只能创建一级目录
                                 //如果上步改为mkdirs()即可创建多级目录成功
                //判断文件对象是否是文件或者目的时,必须要先判断该文件对象封装的内容是否存在。
                                System.out.println(file.isFile());//false:为什么?
                                //只是内存中有这个对象,但硬盘上不存在文件或文件夹,无法判断即为假!

                System.out.println(file.isDirectory());//false 道理同上!
                System.out.println(file.getName());//内存中已经有这个对象,所以可以获取
                System.out.println(file.getPath());
                System.out.println(file.getParent());
                System.out.println(file.getAbsolutePath());
        }
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
全超 发表于 2013-3-6 00:51
不知能否帮到忙。。
public class FileTest        {        
                public static void main(St ...

谢谢,说得很清晰
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马