Java资源的定位方式

Creative Commons License
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。

 

 

I/O操作在Java中是必须掌握的技术,其中文件的定位问题就极容易引起思维上的混乱。如下例:

File f1 = new File("/test.txt");
File f2 = new File("test.txt");

我们将“/”开头的路径称为绝对路径,将非“/”开头的路径称为相对路径。那么上面的绝对路径及相对路径又分别定位到哪一个文件上了呢?

 

要想掌握文件的定位问题,须了解以下几个概念:
1. 文件系统的根目录
在Windows下,每一个分区的根目录(如C:/ D:/ E:/)都是我们所说的文件系统的根目录;在UNIX下,"/"就是文件系统的根目录。
2. 程序运行的工作目录
一个带有静态main函数的Java类,需要使用java命令才能够执行,我们将执行java命令时所处的目录称为工作目录。
3. 类路径(classpath)
类路径指的是Java类所在包的根目录。
4. 包路径
通常Java类都有自己的包,在文件系统中,Java类的包以目录的方式表现。一个Java类所在的目录称为这个类的包路径。

 

假如,一个cn.net.uglyduck.test.Test类(类名:Test,包名:cn.net.uglyduck.test)的类路径
    C:/project/bin
则Test类的包路径则为
    C:/project/bin/cn/net/uglyduck/test
如果我们的工作目录类路径相同,则执行Java程序时,不用指定classpath。如:
    C:/project/bin>java  cn.net.uglyduck.test.Test
如果工作目录类路径不同,则执行Java程序时需要指定classpath。如:
    C:/project>java  -cp  C:/project/bin  cn.net.uglyduck.test.Test

 

在Java中定位资源文件的常用方式有两种:文件系统定位方式与类路径定位方式。
所谓文件系统定位就是以文件系统的根目录为绝对路径,以程序运行的工作目录为相对路径进行资源定位。Java中最常用的以文件系统定位方式进行处理的类包括File、FileInputStream和FileOutputStream。

 

例如Test类的定义如下:

  

如果Test类的类路径为C:/project/bin,我们在C:/project下执行程序,命令行如下:

C:/project>java  -cp  C:/project/bin  cn.net.uglyduck.test.Test

得到的结果是:

/test1.txt --> C:/test1.txt
test2.txt  --> C:/project/test2.txt

所谓类路径定位就是以类路径为绝对路径,以包路径为相对路径进行资源定位。Java类的静态方法getResource或getResourceAsStream就是以类路径的方式进行资源定位。

 

例如Test类的定义做如下修改:

如果Test类的类路径为C:/project/bin,我们在C:/project下执行程序,命令行如下:

C:/project>java  -cp  C:/project/bin  cn.net.uglyduck.test.Test

得到的结果是:

/test1.txt --> file:/C:/project/bin/test1.txt
test2.txt  --> file:/C:/project/bin/cn/net/uglyduck/test/test2.txt

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值