JAVA File的创建及相对路径绝对路径

http://blog.sina.com.cn/s/blog_9386f17b0100w2vv.html

JAVA File的创建及相对路径绝对路径

(2011-12-09 08:27:56)

转载▼

标签:

杂谈

分类: 技术

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()就搞定了。

-----------------------
-----------------------
File类是用来构造文件或文件夹的类,在其构造函数中要求传入一个String类型的参数,用于指示文件所在的路径.以前一直使用绝对路径作为参

数,其实这里也可以使用相对路径.使用绝对路径不用说,很容易就能定位到文件,那么使用了相对路径jvm如何定位文件的呢?

按照jdk Doc上的说法”绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。相反,相对路径名必须使用来自其他路

径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是

Java 虚拟机的调用目录.”

相对路径顾名思义,相对于某个路径,那么究竟相对于什么路径我们必须弄明白.按照上面jdk文档上讲的这个路径是”当前用户目录”也就是”

java虚拟机的调用目录”.更明白的说这个路径其实是我们在哪里调用jvm的路径.举个例子:

假设有一java源文件Example.java在d盘根目录下,该文件不含package信息.我们进入命令行窗口,然后使用”d:”命令切换到d盘根目录下,然后

用”javac Example.java”来编译此文件,编译无错后,会在d盘根目录下自动生成”Example.class”文件.我们在调用”java Example”来运行

该程序.此时我们已经启动了一个jvm,这个jvm是在d盘根目录下被启动的,所以此jvm所加载的程序中File类的相对路径也就是相对这个路径的,即

d盘根目录:D:\.同时” 当前用户目录”也是D:\.在System.getProperty(“user.dir”);系统变量”user.dir”存放的也是这个值.

我们可以多做几次试验,把”Example.class”移动到不同路径下,同时在那些路径下,执行”java Example”命令启动jvm,我们会发现这个”当前

用户目录”是不断变化的,它的路径始终和我们在哪启动jvm的路径是一致的.

搞清了这些,我们可以使用相对路径来创建文件,例如:

File file = new File(“a.txt”);

file.createNewFile();

假设jvm是在”D:\”下启动的,那么a.txt就会生成在D:\a.txt;

此外,这个参数还可以使用一些常用的路径表示方法,例如”.”或”.\”代表当前目录,这个目录也就是jvm启动路径.所以如下代码能得到当前目

录完整路径:

File f = new File(“.”);

String absolutePath = f.getAbsolutePath();

System.out.println(absolutePath);//D:\

最后要说说在eclipse中的情况:

Eclipse中启动jvm都是在项目根路径上启动的.比如有个项目名为blog,其完整路径为:D:\work\IDE\workspace\blog.那么这个路径就是jvm的启

动路径了.所以以上代码如果在eclipse里运行,则输出结果为” D:\work\IDE\workspace\blog.”

Tomcat中的情况.

如果在tomcat中运行web应用,此时,如果我们在某个类中使用如下代码:

File f = new File(“.”);

String absolutePath = f.getAbsolutePath();

System.out.println(absolutePath);

那么输出的将是tomcat下的bin目录.我的机器就是” D:\work\server\jakarta-tomcat-5.0.28\bin\.”,由此可以看出tomcat服务器是在bin目

录下启动jvm的.其实是在bin目录下的” catalina.bat”文件中启动jvm的.

时间: 2024-12-25 13:42:37

JAVA File的创建及相对路径绝对路径的相关文章

Windows下Java File对象创建文件夹时的一个"坑"

import java.io.File; import java.io.IOException; public class DirCreate { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub String dirStr="D:"; File dir=new File(dirStr); System.out.println("====

java中如何创建带路径的文件

请教各位大侠了,java中如何创建带路径的文件,说明下 这个路径不存在 ------回答--------- ------其他回答(2分)--------- Java code File f = new File("c:/1.txt"); if(!f.exists()){ try { f.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } ------其他回答(18分)--------- Java cod

JAVA File类(文件的遍历,创建,删除)

File类构造函数 File f1=new File("H://asc//");//传入文件/目录的路径 File f2=new File(f1,"test.txt");//第一个参数为一个目录文件,第二个参数为要在当前f1目录下要创建的文件 file.list();  获得file文件夹下所有文件/目录的字符串数组 String []liStrings=f1.list(); for (int i = 0; i < liStrings.length; i++)

java File linux windows 下 绝对路径 相对路径问题

前言 当前项目目录 windows 为  E:\project\testpro\ linux 为  /project/testpro/ Windows环境下获取绝对路径情况 使用 a/b/c 为路径,获取绝对路径:  new File("a/b/c").getAbsolutePath() 其得到路径为  E:\project\testpro\sspt-sppt\a\b\c 使用 /a/b/c 路径,获取绝对路径  new File("/a/b/c").getAbso

java File类

今天我要总结一下java File类.这个是一个很重要的类. 首先是我画的思维导图. 还写了一些自己写的代码. /** * Date : 2017/6/24 * Author : Hsj * Description : */ public class Demo { /** * File(pathname)表示文件或文件夹路径 * File(String parent,child); * File(File parent,child); */ @Test public void fun() { /

java File类的常见用法

File类简单用法! [java] view plain copy print? [java] view plain copy print? import java.io.File; import java.io.IOException; public class TestFile { public void createFile(String path){ File file=new File(path); if(!file.exists()){//判断文件是否存在 try { file.cr

Java中如何创建进程(转)

在Java中,可以通过两种方式来创建进程,总共涉及到5个主要的类. 第一种方式是通过Runtime.exec()方法来创建一个进程,第二种方法是通过ProcessBuilder的start方法来创建进程.下面就来讲一讲这2种方式的区别和联系. 首先要讲的是Process类,Process类是一个抽象类,在它里面主要有几个抽象的方法,这个可以通过查看Process类的源代码得知: 位于java.lang.Process路径下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Java : File

在java的世界里,everything is object,文件和目录也不例外.无论在WINDOWS.LINUX or MAC,目录和普通文件都可以封装成对象.java提供了File类来操作计算机系统中的文件和目录. File中有两个常量: File.separator,即目录分隔符.在windows中为"\"但涉及到转移字符,所以正确的写法是“\\”;在linux中表示为“/”,如下文所示. File.pathSeparator 用于分割多个路径的字符,比如在我使用的fedora系

Java File操作汇总

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/41223841 本文通过大量的示例,介绍和讲解了Java File操作. 1)创建文件  2)删除文件  3)判断文件是否存在  4)创建文件夹  5)文件类型判断  6)获取文件信息 7)获取目录下文件名  8)递归打印所有文件名  9)递归删除整个文件夹  10)Properties类 11)SequenceInputStream类:连接多个流  12)对象序列化实现Ser