黑马程序员技术交流社区

标题: 新手,File类问题? [打印本页]

作者: 谢洋    时间: 2013-3-5 11:05
标题: 新手,File类问题?
本帖最后由 谢洋 于 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不是目录,但下面还能打印出目录路径,名字等??
作者: 杨杨    时间: 2013-3-5 11:33
改为 System.out.println(file.mkdirs());//ture
        file.mkdir();//false
创建此抽象路径名指定的目录。
也就说 这个目录不存在
boolean mkdirs()
          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。


       System.out.println(file.isDirectory());//false 为什么?,下面还可以打印出结果
是存在于内存中的对象 还没有 执行在硬盘中操作
作者: 张晋瑜    时间: 2013-3-5 11:44
我拿你的代码运行了一下,System.out.println(file.isDirectory());打印结果是true;相当于计算机把“myfile\file.txt”当作目录名了

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

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

之所以System.out.println(file.getAbsolutePath());可以打印出来,那是因为文件名也是路径的一部分啊
作者: 全超    时间: 2013-3-6 00:51
本帖最后由 全超 于 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());
        }
}

作者: 谢洋    时间: 2013-3-6 13:05
全超 发表于 2013-3-6 00:51
不知能否帮到忙。。
public class FileTest        {        
                public static void main(St ...

谢谢,说得很清晰




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