关于 createNewFile

awakensandman 2010-10-30 02:41:31
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()这个函数理解啊。

*/

高手们,帮忙看看。
...全文
1740 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
gisyepan2011 2011-01-07
  • 打赏
  • 举报
回复
抽象路径:内存中存在的一个用字符串代表的路径,并非硬盘中实际的物理路径,在实际硬盘中可以有这个层次结构,也可以没有,所以说它是抽象的。
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()就搞定了。
其他的自己思考了。
sxdsly 2010-10-31
  • 打赏
  • 举报
回复
创建单级目录用mkdir()方法,创建多级目录使用mkdirs()方法,创建目录完成之后,然后就可以使用creatNewFile()找到指定的路径后就可以创建文件了,如果不存在指定的路径,则创建不成功。。。。
wander_wait 2010-10-30
  • 打赏
  • 举报
回复
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
这样就可以了
magong 2010-10-30
  • 打赏
  • 举报
回复
dir.mkdirs();
magong 2010-10-30
  • 打赏
  • 举报
回复
在顶楼
f1.createNewFile();
那行上加
File dir = new File("d:/b/a");
dir.makedirs();
awakensandman 2010-10-30
  • 打赏
  • 举报
回复
问题是:
如果要修改程序,如何修改呢?
我想在目录 d:/b/a 下创建t.txt 如何修改呢?
magong 2010-10-30
  • 打赏
  • 举报
回复
mkdir createNewFile delete都不能在父目录上递归执行,只有mkdirs例外。
licip 2010-10-30
  • 打赏
  • 举报
回复
楼上讲的对。一个是创建路径,一个是创建文件。
贪睡的兔子 2010-10-30
  • 打赏
  • 举报
回复
File 可以创建文件,也可以创建目录,
当你指定的是createNewFile()创建文件,指定mkdir()时创建目录
awakensandman 2010-10-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gudankangti1987 的回复:]
关于类的方法,建议楼主多看看 JDK的API

这样的问题很没水平。 独立培养自我解决的能力 楼主你才会有提高
[/Quote]
谢谢,我也认真的阅读了API文档,可文档用词都很晦涩。如:路径名字符串 与 抽象路径名,我还没有理解他们的区别,到底代表的是什么意思。 我也尝试去写了几个例子,无奈老出异常
zhuyouyong 2010-10-30
  • 打赏
  • 举报
回复
ding[Quote=引用 1 楼 s0s0s0s 的回复:]
他只管创建文件,不管路径,如果路径不存在,则创建文件不成功。
[/Quote]
别人家的老公 2010-10-30
  • 打赏
  • 举报
回复
关于类的方法,建议楼主多看看 JDK的API

这样的问题很没水平。 独立培养自我解决的能力 楼主你才会有提高
awakensandman 2010-10-30
  • 打赏
  • 举报
回复
还有一个问题,希望大家能帮忙。

file()构造方法既可以是目录也可以是文件,java中目录和文件区分的不太清楚。

举个例子:
File f = new File("d:/t/t.txt"); d:/t/t.txt就有两种理解,t.txt也可以是文件夹(目录),也可能是文件。如何确定呢? 比如我想创建的是目录,如何操作呢? 又或者是文件,又该如何操作呢?
awakensandman 2010-10-30
  • 打赏
  • 举报
回复
如果要修改程序,如何修改呢?
我想在目录 d:/b/a 下创建t.txt 如何修改呢?
s0s0s0s 2010-10-30
  • 打赏
  • 举报
回复
他只管创建文件,不管路径,如果路径不存在,则创建文件不成功。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧