import java.io.*;
public class Test_Create{
public static void main(String args[]){
File f1 = new File("d:/b/a/t.txt");  //如果这里使用 d:/t.txt 空文档就能创建出来。 是什么问题呢?我也测试了别的带参的createnewfile方法,还是没有理解。望指点迷津啊
if ( !f1.exists() ){
try {
System.out.println("文件不存在!创建该文件ing...");
f1.createNewFile();
System.out.println("创建成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
    if(f1.isDirectory()){
     System.out.println("f1是目录 目录名:" + f1.getName());
     System.out.println("路径名为:" + f1.getAbsolutePath());
    } else if(f1.isFile()){
     System.out.println("f1是文件 文件名:"+ f1.getName());
     System.out.println("路径名为:" + f1.getAbsolutePath());
     System.out.println("父路径为:" + f1.getParent());
    } else {
     System.out.println("抛出异常!");
     }

}
}

/**
此程序编译是通过的,运行就会抛出异常。还没有把createNewFile()这个函数理解啊。*/高手们,帮忙看看。

解决方案 »

  1.   

    如果要修改程序,如何修改呢?
    我想在目录 d:/b/a 下创建t.txt  如何修改呢?
      

  2.   

    还有一个问题,希望大家能帮忙。file()构造方法既可以是目录也可以是文件,java中目录和文件区分的不太清楚。举个例子:
    File f = new File("d:/t/t.txt");  d:/t/t.txt就有两种理解,t.txt也可以是文件夹(目录),也可能是文件。如何确定呢? 比如我想创建的是目录,如何操作呢? 又或者是文件,又该如何操作呢?
      

  3.   

    关于类的方法,建议楼主多看看 JDK的API  这样的问题很没水平。   独立培养自我解决的能力    楼主你才会有提高
      

  4.   

    谢谢,我也认真的阅读了API文档,可文档用词都很晦涩。如:路径名字符串 与 抽象路径名,我还没有理解他们的区别,到底代表的是什么意思。 我也尝试去写了几个例子,无奈老出异常
      

  5.   

    File 可以创建文件,也可以创建目录,
    当你指定的是createNewFile()创建文件,指定mkdir()时创建目录
      

  6.   

    mkdir createNewFile delete都不能在父目录上递归执行,只有mkdirs例外。
      

  7.   

    问题是:
    如果要修改程序,如何修改呢?
    我想在目录 d:/b/a 下创建t.txt 如何修改呢?
      

  8.   

    在顶楼
    f1.createNewFile();
    那行上加
    File dir = new File("d:/b/a");
    dir.makedirs();
      

  9.   

    dir.mkdirs();
      

  10.   

    File f1 = new File("d:/b/a/t.txt");根据Java的可移植性,应该写成
    File f1 = new File("d:"+File.separator+"b"+File.separator+"a"+File.separator+"t.txt)因为在不同的操作系统下,路径中的斜杠是不同的,在linux下是“\”,在windows下是“/”,所以会抛出异常啊,如果真的不行就在住函数前加上public static void main(String args[])throws Exception
    这样就可以了
      

  11.   

    创建单级目录用mkdir()方法,创建多级目录使用mkdirs()方法,创建目录完成之后,然后就可以使用creatNewFile()找到指定的路径后就可以创建文件了,如果不存在指定的路径,则创建不成功。
      

  12.   

    抽象路径:内存中存在的一个用字符串代表的路径,并非硬盘中实际的物理路径,在实际硬盘中可以有这个层次结构,也可以没有,所以说它是抽象的。
    path:翻译成中文为“路径”。有绝对路径和相对路径之分,常见的概念不予解释。
    file:翻译成中文为“文件”。文件和文件夹是一个相对概念(文件夹是windows中的概念,DOS中对应于目录)。文件夹是一个盒子,里面装的内容是文件,那么这个文件当然可以是一个.txt ,.doc,.jpg等形式的文件,当然也可以是一个装有其他文件的文件夹。所以file可以对应于文件和文件夹。
    File f = new File("D:/test/mytest.txt");//当执行这句话后在内存的栈空间存在一个f的应用,在堆空间里存在一个mytest.txt对象。注意这个对象只含有文件的属性(如大小,是否可读,修改时间等),不包含文件的内容,所以length=0。当我们想执行对文件的操作的时候,这个时候抽象路径起作用了,比如我们想执行f.createNewFile()命令时,虚拟机会将抽象路径转化为实际的物理路径,到这个转化后的物理路径(此时是硬盘)下进行文件的创建。这时,如果在你的D盘没有test文件夹,那么不好意思啦,程序就会抛异常,如果有test文件夹,就可以创建一个mytest.txt文件了。能不能创建mytest.txt就在于这个文件上面有没有test文件夹,这也就是抽象路径在装怪了。
    如果想让f引用在硬盘中把文件夹也创建出来怎么办?用f.getParentFile()求出mytest.txt上面的所有文件夹,然后在mkdirs()就搞定了。
    其他的自己思考了。