- 浏览: 576853 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
a1641693970:
还不错,学习了
BeanUtils使用总结(二)LazyDynaBean -
zjfshowtime:
很好的办法,学习了。
ORA-28001: the password has expired -
ya654277yo:
哦,多谢分享
Apache整合Tomcat后get方式提交中文乱码问题解决 -
foolkeeper:
nice !!
jvm内存参数设定 -
tracy821:
谢谢了,找了好久才找到
关于Spring 声明式事务处理时,throws exception不回滚的问题
转自:http://www.blogjava.net/dreamstone/archive/2007/08/08/134968.html
file的这几个取得path的方法各有不同,下边说说详细的区别
概念上的区别:(内容来自jdk,个人感觉这个描述信息,只能让明白的人明白,不明白的人看起来还是有点难度(特别试中文版,英文版稍好些)所以在概念之后我会举例说明。如果感觉看概念很累就跳过直接看例子吧。看完例子回来看概念会好些。
getPath
public String getPath()将此抽象路径名转换为一个路径名字符串。所得到的字符串使用默认名称分隔符来分隔名称序列中的名称。
返回:
此抽象路径名的字符串形式
public String getPath()将此抽象路径名转换为一个路径名字符串。所得到的字符串使用默认名称分隔符来分隔名称序列中的名称。
返回:
此抽象路径名的字符串形式
getAbsolutePath
public String getAbsolutePath()返回抽象路径名的绝对路径名字符串。
如果此抽象路径名已经是绝对路径名,则返回该路径名字符串,这与 getPath() 方法一样。如果此抽象路径名是空的抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性 user.dir 指定。否则,使用与系统有关的方式分析此路径名。在 UNIX 系统上,通过根据当前用户目录分析某一相对路径名,可使该路径名成为绝对路径名。在 Microsoft Windows 系统上,通过由路径名指定的当前驱动器目录(如果有)来分析某一相对路径名,可使该路径名成为绝对路径名;否则,可以根据当前用户目录来分析它。
返回:
绝对路径名字符串,它与此抽象路径名表示相同的文件或目录的
抛出:
SecurityException - 如果无法访问所需的系统属性值。
另请参见:
isAbsolute()
public String getAbsolutePath()返回抽象路径名的绝对路径名字符串。
如果此抽象路径名已经是绝对路径名,则返回该路径名字符串,这与 getPath() 方法一样。如果此抽象路径名是空的抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性 user.dir 指定。否则,使用与系统有关的方式分析此路径名。在 UNIX 系统上,通过根据当前用户目录分析某一相对路径名,可使该路径名成为绝对路径名。在 Microsoft Windows 系统上,通过由路径名指定的当前驱动器目录(如果有)来分析某一相对路径名,可使该路径名成为绝对路径名;否则,可以根据当前用户目录来分析它。
返回:
绝对路径名字符串,它与此抽象路径名表示相同的文件或目录的
抛出:
SecurityException - 如果无法访问所需的系统属性值。
另请参见:
isAbsolute()
getCanonicalPath
public String getCanonicalPath()
throws IOException返回抽象路径名的规范路径名字符串。
规范路径名是绝对路径名,并且是惟一的。规范路径名的准确定义与系统有关。如有必要,此方法首先将路径名转换成绝对路径名,这与调用 getAbsolutePath() 方法的效果一样,然后用与系统相关的方式将它映射到其惟一路径名。这通常涉及到从路径名中移除多余的名称(比如 "." 和 "..")、分析符号连接(对于 UNIX 平台),以及将驱动器名转换成标准大小写形式(对于 Microsoft Windows 平台)。
表示现有文件或目录的每个路径名都有一个惟一的规范形式。表示非存在文件或目录的每个路径名也有一个惟一的规范形式。非存在文件或目录路径名的规范形式可能不同于创建文件或目录之后同一路径名的规范形式。同样,现有文件或目录路径名的规范形式可能不同于删除文件或目录之后同一路径名的规范形式。
返回:
表示与此抽象路径名相同的文件或目录的规范路径名字符串
抛出:
IOException - 如果发生 I/O 错误(可能是因为构造规范路径名需要进行文件系统查询)
SecurityException - 如果无法访问所需的系统属性值,或者存在安全管理器,且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒绝对该文件进行读取访问
从以下版本开始:
JDK1.1
public String getCanonicalPath()
throws IOException返回抽象路径名的规范路径名字符串。
规范路径名是绝对路径名,并且是惟一的。规范路径名的准确定义与系统有关。如有必要,此方法首先将路径名转换成绝对路径名,这与调用 getAbsolutePath() 方法的效果一样,然后用与系统相关的方式将它映射到其惟一路径名。这通常涉及到从路径名中移除多余的名称(比如 "." 和 "..")、分析符号连接(对于 UNIX 平台),以及将驱动器名转换成标准大小写形式(对于 Microsoft Windows 平台)。
表示现有文件或目录的每个路径名都有一个惟一的规范形式。表示非存在文件或目录的每个路径名也有一个惟一的规范形式。非存在文件或目录路径名的规范形式可能不同于创建文件或目录之后同一路径名的规范形式。同样,现有文件或目录路径名的规范形式可能不同于删除文件或目录之后同一路径名的规范形式。
返回:
表示与此抽象路径名相同的文件或目录的规范路径名字符串
抛出:
IOException - 如果发生 I/O 错误(可能是因为构造规范路径名需要进行文件系统查询)
SecurityException - 如果无法访问所需的系统属性值,或者存在安全管理器,且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒绝对该文件进行读取访问
从以下版本开始:
JDK1.1
二、例子:
1,getPath()与getAbsolutePath()的区别
public static void test1(){
File file1 = new File(".\\test1.txt");
File file2 = new File("D:\\workspace\\test\\test1.txt");
System.out.println("-----默认相对路径:取得路径不同------");
System.out.println(file1.getPath());
System.out.println(file1.getAbsolutePath());
System.out.println("-----默认绝对路径:取得路径相同------");
System.out.println(file2.getPath());
System.out.println(file2.getAbsolutePath());
}
File file1 = new File(".\\test1.txt");
File file2 = new File("D:\\workspace\\test\\test1.txt");
System.out.println("-----默认相对路径:取得路径不同------");
System.out.println(file1.getPath());
System.out.println(file1.getAbsolutePath());
System.out.println("-----默认绝对路径:取得路径相同------");
System.out.println(file2.getPath());
System.out.println(file2.getAbsolutePath());
}
得到的结果:
-----默认相对路径:取得路径不同------
.\test1.txt
D:\workspace\test\.\test1.txt
-----默认绝对路径:取得路径相同------
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
因为getPath()得到的是构造file的时候的路径。.\test1.txt
D:\workspace\test\.\test1.txt
-----默认绝对路径:取得路径相同------
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
getAbsolutePath()得到的是全路径
如果构造的时候就是全路径那直接返回全路径
如果构造的时候试相对路径,返回当前目录的路径+构造file时候的路径
2,getAbsolutePath()和getCanonicalPath()的不同
public static void test2() throws Exception{
File file = new File("..\\src\\test1.txt");
System.out.println(file.getAbsolutePath());
System.out.println(file.getCanonicalPath());
}
得到的结果File file = new File("..\\src\\test1.txt");
System.out.println(file.getAbsolutePath());
System.out.println(file.getCanonicalPath());
}
D:\workspace\test\..\src\test1.txt
D:\workspace\src\test1.txt
可以看到CanonicalPath不但是全路径,而且把..或者.这样的符号解析出来。D:\workspace\src\test1.txt
3,getCanonicalPath()和自己的不同。
就是解释这段话:
表示现有文件或目录的每个路径名都有一个惟一的规范形式。表示非存在文件或目录的每个路径名也有一个惟一的规范形式。非存在文件或目录路径名的规范形式可能不同于创建文件或目录之后同一路径名的规范形式。同样,现有文件或目录路径名的规范形式可能不同于删除文件或目录之后同一路径名的规范形式。
单下边这段代码是看不到结果的,要配合一定的操作来看。下边操作步骤,同时讲解
public static void test3() throws Exception{
File file = new File("D:\\Text.txt");
System.out.println(file.getCanonicalPath());
}
步骤:File file = new File("D:\\Text.txt");
System.out.println(file.getCanonicalPath());
}
确定你的系统是Windows系统。
(1),确定D盘下没有Text.txt这个文件,直接执行这段代码,得到的结果是:
D:\Text.txt
注意这里试大写的Text.txt(2)在D盘下建立一个文件,名叫text.txt,再次执行代码,得到结果
D:\text.txt
同样的代码得到不同的结果。同时可以对比getAbsolutePath()看看,这个得到的结果是一样的。
原因:
window是大小写不敏感的,也就是说在windows上test.txt和Test.txt是一个文件,所以在windows上当文件不存在时,得到的路径就是按照输入的路径。但当文件存在时,就会按照实际的情况来显示。这也就是建立文件后和删除文件后会有不同的原因。文件夹和文件类似。
三、最后:
1,尝试在linux下执行上边的步骤,两次打印的结果是相同的,因为linux是大小写敏感的系统。
2,手动删掉test.txt,然后尝试执行下边代码
public static void test4() throws Exception{
File file = new File("D:\\Text.txt");
System.out.println(file.getCanonicalPath());
File file1 = new File("D:\\text.txt");
file1.createNewFile();
file = new File("D:\\Text.txt");
System.out.println(file.getCanonicalPath());
}
File file = new File("D:\\Text.txt");
System.out.println(file.getCanonicalPath());
File file1 = new File("D:\\text.txt");
file1.createNewFile();
file = new File("D:\\Text.txt");
System.out.println(file.getCanonicalPath());
}
public static void test3() throws Exception{
File file1 = new File("D:\\text.txt");
file1.createNewFile();
File file = new File("D:\\Text.txt");
System.out.println(file.getCanonicalPath());
}
执行上边两个函数,看看结果,然后思考一下为什么?File file1 = new File("D:\\text.txt");
file1.createNewFile();
File file = new File("D:\\Text.txt");
System.out.println(file.getCanonicalPath());
}
1,的结果是两个大写,
2,的结果试两个小写
连续两个大写的,是否跟上边的矛盾 ?
这是因为虚拟机的缓存机制造成的。第一次File file = new File("D:\\Text.txt");决定了结果.
所以为了考虑平台无关型,在慎用file.getCanonicalPath()
发表评论
-
BCD Conversion in java
2016-03-31 23:39 1839/** * Copyright 2010 Firat ... -
在java代码中获取JVM参数
2014-04-08 11:16 14255近日关注性能调优,关注JMX,发现java.lang.man ... -
GC日志分析配置与工具
2013-05-08 11:32 1356-verbose:gc(打印GC日志) -Xloggc:( ... -
java 实现HTTP PROXY
2012-12-06 17:21 7578日常应用中使用过很多次代理,主要停留在配置级别。 近期无意看 ... -
运行时获取方法调用堆栈信息(java)
2012-09-14 10:53 9700前几日系统流程回调时,一个方法莫名其妙被调用,无法定位调用点。 ... -
EL表达式在tomcat7.0下的new关键字不能使用
2012-08-24 17:25 4064最近生产系统部署个小应用,服务器选型tomcat7.0,一直运 ... -
xfire设置连接超时问题
2012-08-01 17:25 5147近期使用xfire作为客户端访问WS,结果因为目标主机假死 ... -
将多个对象写到一个文件
2012-07-20 17:08 1247来看一段ObjectOutputStream构造方法的源代码 ... -
多线程学习笔记:synchronized
2011-12-15 17:32 844Java语言的关键字,当它 ... -
(转)使用 Eclipse Memory Analyzer 检测内存泄漏问题
2011-12-14 18:10 1143本文是关于在开发 Talend RCP 过程中碰 ... -
多线程学习笔记:thread 线程中的sleep()、wait()、yield()、join()
2011-12-14 17:46 12791.sleep()方法 在指定时间内让当前正在执行的线程暂 ... -
jconsole监控JVM
2011-12-12 17:46 1564本地监控: Jconsole [processed] ... -
Java 6 JVM参数选项大全(中文版)
2011-11-03 15:19 1038本文 是基于最新的SUN官方 文档Java SE 6 ... -
Java实现远程屏幕监视
2011-10-19 17:40 733Robot robot = new Robot(); / ... -
java线程池 常用方法
2011-09-24 22:52 1387在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于 ... -
JAVA 调用Web Service的方法
2011-08-15 10:28 11561.使用HttpClient 用到的jar文件:comm ... -
JVM监控工具--jvmstat
2011-08-02 15:42 1276首先就是下载这个工具链接:http://java.sun.co ... -
java性能优化
2011-07-18 15:19 1105一、避免在循环条件中 ... -
jvm内存参数设定
2011-07-17 20:30 1381在开发java应用时经常出 ... -
怎样解决Java内存泄漏
2011-07-15 11:38 1457解决Java 内存泄漏 Java内存泄漏是每个 ...
相关推荐
Java中File类提供了三个相关的方法:getPath、getAbsolutePath和getCanonicalPath,它们都可以获取文件或目录的路径,但是它们的作用和返回结果不同。 getPath方法: getPath方法将抽象路径名转换为一个路径名字符...
其中,getPath() 和 getAbsolutePath() 两个方法都是用于获取文件或目录的路径,但是它们之间存在着一些区别。 首先,让我们来看一下 getPath() 方法。getPath() 方法将抽象路径名转换为一个路径名字符串。所得到的...
本文将深入探讨 `File` 类中的 `getPath()`, `getAbsolutePath()`, 和 `getCanonicalPath()` 方法之间的区别及其应用场景。 ### 一、`File` 类简介 `java.io.File` 类是Java标准库中的一个基础类,用于封装文件或...
在Java编程语言中,`java.io.File`类是一个非常重要的类,它提供了对文件和目录路径名的抽象表示,并且支持一些基本的操作,例如创建、删除文件或目录等。本文将详细介绍`File`类中的常用构造方法及方法,并给出相应...
2. **file的getPath, getAbsolutePath, getCanonicalPath的不同**: 同上,`getPath()`返回基本路径,`getAbsolutePath()`提供完整绝对路径,`getCanonicalPath()`则处理了路径中的相对引用和符号链接。 3. **int ...
- `getCanonicalPath()`:返回文件的规范路径,解决符号链接和相对路径的问题。 7. **比较和排序**: - `compareTo(File anotherFile)`:根据文件路径进行比较,可用于排序。 `File.java`这个文件可能是实现了...
需要注意的是,getCanonicalPath() 和 getAbsolutePath() 两个函数的行为有所不同。getCanonicalPath() 函数将返回标准的路径,而 getAbsolutePath() 函数将返回绝对路径。 在使用 File 提供的函数时,需要注意 new...
`getPath()`, `getCanonicalPath()`和`getAbsoluteFile()`用于获取文件的路径表示形式,`toURI()`和`toURL()`可以将文件转换为URI或URL对象。 在提供的`FileOperator.java`文件中,很可能包含了对这些操作的实现。...
Java中的`File`类是Java.io包中的核心类,它用于表示文件和目录路径名的抽象表示。在Java中,`File`类并不是用来存储文件内容的,而是用来操作文件和目录,比如创建、删除、重命名文件,以及获取文件的各种属性信息...
File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f.getAbsolutePath()); // 输出:C:\Documents%20and%20Settings\Administrator\workspace\projectName\bin ``` 这段代码会...
Java中的`File`类是Java.io包中的核心类,它被用来封装文件和目录路径名。这个类提供了许多方法来操作文件和目录,包括创建、删除、重命名、获取属性等。下面,我们将深入探讨`File`类的基本用法。 1. 创建文件对象...
4. **路径处理:** `getPath()`、`getAbsolutePath()`和`getCanonicalPath()`分别返回文件的路径、绝对路径和规范路径。 5. **文件I/O操作:** 虽然File类本身并不直接进行文件的读写,但它可以与其他I/O流结合使用...
通过以上介绍可以看出,`getAbsolutePath()`、`getPath()` 和 `getCanonicalPath()` 这三个方法分别提供了获取绝对路径、相对路径和规范路径的功能。开发者可以根据实际需求选择合适的方法来获取文件或目录的路径。...
`getPath()`, `getAbsolutePath()`, `getCanonicalPath()`分别获取文件的路径、绝对路径和规范路径;`list()`, `listFiles(FileFilter)`列出目录下的文件和子目录;`listRoots()`则返回系统的根目录列表。 学习Java...
6. 文件操作中的常见方法:File 对象的常见方法包括 getParent()、getName()、getPath()、getAbsolutePath()、getCanonicalPath()、exists()、isDirectory()、isFile()、createNewFile() 等。 7. 文件的元信息:...
- `getAbsolutePath()` 和 `getCanonicalPath()`:获取文件的绝对路径和规范路径。 - `getName()`:返回文件或目录的名称。 - `getPath()`:返回文件的路径。 - `getParent()`:获取文件的父目录路径。 - `last...
Java 提供了字节流(处理字节数据)和字符流(处理字符数据)两种类型的流,以及它们的缓冲流、转换流、对象流等多种变体,以适应不同的数据类型和需求。 例如,如果你想要读取一个文本文件,你可以使用 `...
`File` 类提供了多种方法来获取关于文件和目录的信息: 1. `getName()`:返回文件名,不包括路径部分。 2. `getPath()`:返回文件的完整路径,可能是相对路径或绝对路径。 3. `getAbsolutePath()`:返回文件的绝对...