代码如下:                  
        File javaFile = new File("E:\\javaFile.txt");
        try
        {
  //if (javaFile.isFile())
  //{
  // System.out.println("文件已存在!");
  //}
  if (javaFile.exists())
  {
System.out.println("文件已存在!");
  }
  else
  {
               //javaFile.createNewFile();
              //System.out.println("文件创建成功!");
            }
            PrintWriter printWriter = new PrintWriter(javaFile);
   printWriter.println("Hello world!");
   printWriter.close();
        }
catch (IOException e1)
{
e1.printStackTrace();
}发现即便不createNewFile,只要在javaFile里写hello world,程序就会自动在目录下生成javaFile.txt。
所以想求教一下file生成文件的机制?
另外问一下大虾们,isFile这个方法,从api说明里看,好像只是判断file实例是directory还是normal file,但我实验的结果是,它还检查该实例是否已经生成文件?请大虾证实一下是否有这样的机制?
谢谢!

解决方案 »

  1.   

    File javaFile = new File("E:\\javaFile.txt");
    这个时候就建立文件了
      

  2.   

    File javaFile = new File("E:\\javaFile.txt")是在内存中创建,还没开始写到磁盘,createNewFile是真正开始写入磁盘
      

  3.   

    File javaFile = new File("E:\\javaFile.txt");
    这个时候就建立文件了
    -----------------------------------------------------------------我试过,如果不用printWriter往file里写东西,也不用createNewFile,则不会在E盘创建javaFile.txt,但如果用printWriter写了东西,即便不调用createNewFile,最后也会在E盘创建javaFile.txt。
      

  4.   

    你往不存在的文件里写数据的时候  文件才会被建立  而不是你声明File类的实例的时候 就建立