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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田向向 高级黑马   /  2012-6-28 19:18  /  1940 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 田向向 于 2012-6-28 21:01 编辑

今天大一的问我这么一个程序,但是在大学的时候我没怎么听课,并且现在我看视频学基础还没看到这地方,所以整个把我看懵了,所以到这里找大仙们求助
import java.io.File;
import java.io.IOException;

public class TestFile {
public static void main(String args[])
{
  File fl=new File("F:\\TestFile"); //目录
  if(!fl.exists())
  {
   System.out.println("fl不存在,创建该对象......");
   if(fl.isDirectory())
   {
    fl.mkdir();
    System.out.println("fl是目录,创建该目录");
   }
   else
   {
    System.out.println("不是目录,判断是否为文件......");
    if(fl.isFile())
    {
     try
     {
      fl.createNewFile();
     }
     catch (IOException e)
     {
      System.out.println("创建文件出错!");
     }
     System.out.println("fl是文件,创建该文件");
    }
   }
  }
  else
  {
   System.out.println("fl已存在!");
  }
  System.out.println(fl.isFile());
  System.out.println(fl.isDirectory());
}
}  
测试结果:
fl不存在,创建该对象......
不是目录,判断是否为文件......
false
false

为什么会出这种结果?麻烦大侠们给我讲讲这个程序更好


7 个回复

倒序浏览
过程还是很简单的。首先这个文件不存在,所以进入if(!fl.exists())分支
   然后因为还不存在,所以既不是目录,也不是文件。会进入 if(fl.isDirectory())的else也就是System.out.println("不是目录,判断是否为文件......");
最后这个文件还是没有创建,所以最后还是两个false

点评

非常感谢  发表于 2012-6-28 21:02

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

回复 使用道具 举报
import java.io.File;
import java.io.IOException;

public class TestFile {
public static void main(String args[])
{
  File fl=new File("F:\\TestFile"); //目录 建立File对象把路径赋值给fl
  if(!fl.exists()) //判断路径文件是否存在
  {
   System.out.println("fl不存在,创建该对象......"); //输出
   if(fl.isDirectory()) //判断是不是文件夹
   {
    fl.mkdir();//在已经存在的目录中创建创建文件夹。
    System.out.println("fl是目录,创建该目录");//输出
   }
   else
   {
    System.out.println("不是目录,判断是否为文件......");
    if(fl.isFile())//判断是否为文件
    {
     try //异常
     {
      fl.createNewFile();// 创建TestFile文件
     }
     catch (IOException e)//错误的话 就抛出异常
     {
      System.out.println("创建文件出错!");
     }
     System.out.println("fl是文件,创建该文件");
    }
   }
  }
  else
  {
   System.out.println("fl已存在!");
  }
  System.out.println(fl.isFile());//输出是否是文件 布尔类型
  System.out.println(fl.isDirectory());//输出是否是目录 布尔类型

}
}  

点评

谢谢  发表于 2012-6-28 21:01

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

回复 使用道具 举报
public class TestFile {
public static void main(String args[])
{
  File fl=new File("F:\\TestFile"); //目录
  if(!fl.exists())
  {
   System.out.println("fl不存在,创建该对象......");//执行到这条语句的时候打印出语句(fl不存在,创建该对象......) 但是并没有创建该文件   
   if(fl.isDirectory())//由于文件还没有创建就判断是否是目录结果肯定为false,直接跳到else语句里继续执行   
   {
    fl.mkdir();
    System.out.println("fl是目录,创建该目录");
   }
   else
   {
    System.out.println("不是目录,判断是否为文件......");//执行到这,打印(不是目录,判断是否为文件......)  
   if(fl.isFile())//同理,由于文件还没有创建就判断是否是文件结果肯定为false   
  {
     try
     {
      fl.createNewFile();
     }
     catch (IOException e)
     {
      System.out.println("创建文件出错!");
     }
     System.out.println("fl是文件,创建该文件");
    }
   }
  }
  else
  {
   System.out.println("fl已存在!");//f1不存在
  }
  System.out.println(fl.isFile());//因为不存在打印false  
  System.out.println(fl.isDirectory());//因为不存在打印false}
}  

点评

非常感谢  发表于 2012-6-28 21:02

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

回复 使用道具 举报
public class TestFile {
public static void main(String args[])
{
  File fl=new File("F:\\TestFile"); //目录
  if(!fl.exists())
  {
   System.out.println("fl不存在,创建该对象......");//执行到这条语句的时候打印出语句(fl不存在,创建该对象......) 但是并没有创建该文件   
   if(fl.isDirectory())//由于文件还没有创建就判断是否是目录结果肯定为false,直接跳到else语句里继续执行   
   {
    fl.mkdir();
    System.out.println("fl是目录,创建该目录");
   }
   else
   {
    System.out.println("不是目录,判断是否为文件......");//执行到这,打印(不是目录,判断是否为文件......)  
   if(fl.isFile())//同理,由于文件还没有创建就判断是否是文件结果肯定为false   
  {
     try
     {
      fl.createNewFile();
     }
     catch (IOException e)
     {
      System.out.println("创建文件出错!");
     }
     System.out.println("fl是文件,创建该文件");
    }
   }
  }
  else
  {
   System.out.println("fl已存在!");//f1不存在
  }
  System.out.println(fl.isFile());//因为不存在打印false  
  System.out.println(fl.isDirectory());//因为不存在打印false}
}  

点评

非常感谢  发表于 2012-6-28 21:02
回复 使用道具 举报
public class TestFile {
public static void main(String args[])
{
  File fl=new File("F:\\TestFile"); //目录
  if(!fl.exists())
  {
   System.out.println("fl不存在,创建该对象......");//执行到这条语句的时候打印出语句(fl不存在,创建该对象......) 但是并没有创建该文件   
   if(fl.isDirectory())//由于文件还没有创建就判断是否是目录结果肯定为false,直接跳到else语句里继续执行   
   {
    fl.mkdir();
    System.out.println("fl是目录,创建该目录");
   }
   else
   {
    System.out.println("不是目录,判断是否为文件......");//执行到这,打印(不是目录,判断是否为文件......)  
   if(fl.isFile())//同理,由于文件还没有创建就判断是否是文件结果肯定为false   
  {
     try
     {
      fl.createNewFile();
     }
     catch (IOException e)
     {
      System.out.println("创建文件出错!");
     }
     System.out.println("fl是文件,创建该文件");
    }
   }
  }
  else
  {
   System.out.println("fl已存在!");//f1不存在
  }
  System.out.println(fl.isFile());//因为不存在打印false  
  System.out.println(fl.isDirectory());//因为不存在打印false}
}  
回复 使用道具 举报
本帖最后由 wyl530274554 于 2012-6-28 21:23 编辑
  1. import java.io.File;
  2. import java.io.IOException;

  3. public class TestFile {
  4.         public static void main(String args[])
  5.         {
  6.                 File fl=new File("F:\\TestFile");
  7.                 if(!fl.exists())    //首先判断你TestFile是不是存在,不存在时,执行下面的语句块
  8.                 {
  9.                         System.out.println("fl不存在,创建该对象......");    //1、结果显示打印了这句话,说明TestFile根本不存在,后面①②两步的判断定为false;
  10.                         if(fl.isDirectory())    //①
  11.                         {
  12.                                 fl.mkdir();
  13.                                 System.out.println("fl是目录,创建该目录");
  14.                         }
  15.                         else
  16.                         {
  17.                                 System.out.println("不是目录,判断是否为文件......");    //2、所以这句会执行
  18.                                 if(fl.isFile())    //②
  19.                                 {
  20.                                         try
  21.                                         {
  22.                                                 fl.createNewFile();
  23.                                         }
  24.                                         catch (IOException e)
  25.                                         {
  26.                                                 System.out.println("创建文件出错!");
  27.                                         }
  28.                                         System.out.println("fl是文件,创建该文件");
  29.                                 }
  30.                         }
  31.                 }
  32.                 else
  33.                 {
  34.                         System.out.println("fl已存在!");
  35.                 }    //if...else语句结束,继续执行下面的两条语句

  36.                 System.out.println(fl.isFile());  //3、文件不存在,即打印false
  37.                 System.out.println(fl.isDirectory());    //4、不是目录,即打印false

  38.         }
  39. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

回复 使用道具 举报
努力努力  先达到看懂的水平
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马