- 浏览: 418459 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (115)
- spring (1)
- apache-hadoop (1)
- struts 2.x (12)
- ruby & rails (2)
- hibernate 3.x (1)
- oracle (2)
- sqlserver (6)
- maven (3)
- Java (29)
- tomcat (7)
- resin 3.x (2)
- javascript (10)
- eclipse (6)
- DWR (1)
- ibatis (4)
- Linux (4)
- servlet (1)
- J2EE项目分析 (7)
- Lucene (4)
- jQuery (1)
- mysql (2)
- OSGI (1)
- JMS ActiveMQ (2)
- 开源 (1)
最新评论
-
aplixy:
gaoyibin 写道我在io流关闭以后使用renameTo ...
Java File.renameTo方法一直返回false -
GGGGeek:
...
java反射:object is not an instance of declaring class -
zgw06629:
多谢了 字符串必须要单引号真得挺坑的
s:radio 默认值 -
com.張:
村上春树
java反射:object is not an instance of declaring class -
僧_唐:
该方法不能真正的解决 actionMessage或action ...
struts2中多action间传递ActionMessage,ActionError
引用
http://www.blogjava.net/dreamstone/archive/2007/08/08/134968.html
file的这几个取得path的方法各有不同,下边说说详细的区别
概念上的区别:(内容来自jdk,个人感觉这个描述信息,只能让明白的人明白,不明白的人看起来还是有点难度(特别试中文版,英文版稍好些)所以在概念之后我会举例说明。如果感觉看概念很累就跳过直接看例子吧。看完例子回来看概念会好些。
getPath
public String getPath()将此抽象路径名转换为一个路径名字符串。所得到的字符串使用默认名称分隔符来分隔名称序列中的名称。
返回:
此抽象路径名的字符串形式
getAbsolutePath
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
二、例子:
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()); }
得到的结果:
-----默认相对路径:取得路径不同------ .\test1.txt D:\workspace\test\.\test1.txt -----默认绝对路径:取得路径相同------ D:\workspace\test\test1.txt D:\workspace\test\test1.txt
因为getPath()得到的是构造file的时候的路径。
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()); }
得到的结果
D:\workspace\test\..\src\test1.txt D:\workspace\src\test1.txt
可以看到CanonicalPath不但是全路径,而且把..或者.这样的符号解析出来。
3,getCanonicalPath()和自己的不同。
就是解释这段话:
表示现有文件或目录的每个路径名都有一个惟一的规范形式。表示非存在文件或目录的每个路径名也有一个惟一的规范形式。非存在文件或目录路径名的规范形式可能不同于创建文件或目录之后同一路径名的规范形式。同样,现有文件或目录路径名的规范形式可能不同于删除文件或目录之后同一路径名的规范形式。
单下边这段代码是看不到结果的,要配合一定的操作来看。下边操作步骤,同时讲解
public static void test3() throws Exception{ 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()); } 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()); }
执行上边两个函数,看看结果,然后思考一下为什么?
1,的结果是两个大写,
2,的结果试两个小写
连续两个大写的,是否跟上边的矛盾 ?
这是因为虚拟机的缓存机制造成的。第一次File file = new File("D:\\Text.txt");决定了结果.
发表评论
-
windows下将jar文件设置成bat
2012-03-09 12:00 2298例如将如下jar包D:\bat\JRadiussimulato ... -
HttpURLConnection相关
2011-09-16 17:57 11791、java.io.FileNotFoundException ... -
UML中类之间的关系及其Java代码例子<转>
2011-05-11 09:38 2474关系是事物之间的联系 ... -
java反射:object is not an instance of declaring class
2011-04-12 09:56 79073/** * <pre> * &l ... -
XML、JavaBean转换
2011-02-11 11:48 2406引用转自http://lywybo.iteye.com/blo ... -
Proxool报错Exception in Thread "HouseKeeper" java.lang.NullPointerException
2011-01-19 17:45 9744问题: 当tomcat里的项目设置成reload=true时, ... -
log4j不打印日志文件到tomcat日志中
2011-01-18 11:06 9317如有以下log4j配置: log4j.rootLogger ... -
dom4j生成xml
2011-01-17 16:00 13211、XMLWriter输出domcument对象: XML ... -
SVN服务端安装
2010-12-18 12:37 1729一、下载安装文件 可执行文件:http://subversio ... -
JAVA中几种概念
2010-08-27 13:52 11301、高内聚(将逻辑上相关的抽象放在一起)低耦合(减少模块间的依 ... -
ehcache报告UnknownHostException错误
2010-06-05 15:07 4843报错如下: java.net.UnknownHostExc ... -
log4j中关闭memcached日志
2010-03-27 18:31 2556log4j.logger.com.danga.MemCache ... -
Java文件下载的几种方式
2010-01-06 15:02 1384public HttpServletResponse do ... -
TreeView鼠标放在node上显示文字
2009-12-08 20:39 1575在node的Text属性上,包一层<span>让其 ... -
BufferedReader和FileReader读取txt文件乱码
2009-11-11 14:11 4986读取txt文件乱码 BufferedReader rea ... -
c3p0 DEBUG -- CLOSE BY CLIENT STACK TRACE
2009-11-06 14:32 4595Indeed, there is nothing to wor ... -
Apach Common 包
2009-10-28 22:47 1196Common IO: FileUtils: File t ... -
File API 常用方法
2009-10-28 15:13 1231File f = new File("c:\\ ... -
Java File.renameTo方法一直返回false
2009-10-22 17:36 7403描述: 在使用File.renameTo修改文件名时,一直返 ... -
java读取某目录下所有文件名
2009-09-29 15:22 6885Java的Flie对象的list方法可以获取该目录下的所有文件 ...
相关推荐
File的getPath_getAbsolutePath和getCanonicalPath的不同
1.2 file的getPath getAbsolutePath和getCanonicalPath的不同 . . . . . . .5 1.3 int String 互转的多种方法 . . . . . . . . . . . . . . . . . . . . . 10 1.4 JAVA注释方法及格式 . . . . . . . . . . . . . . ....
Java中getPath与getAbsolutePath区别.pdf
下面小编就为大家带来一篇详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
System.out.println("绝对路径: " + file.getAbsolutePath()); System.out.println("最后修改时间:" + file.lastModified()); System.out.println("文件大小:" + file.length()+ " 字节"); } }
Web安全测试软件GetPath Web安全测试软件GetPath
getPath.html
String path = file.getAbsolutePath(); String str = ""; if(System.getProperty("os.name").toLowerCase().startsWith("windows")){ str = path.replace(this.rootPath.replaceAll("\\/", "\\\\"), "\\"); }...
getpath 抓路径getpath 抓路径getpath 抓路径
FileOutputStream fos = new FileOutputStream(getFileName(file.getPath())+File.separator+newDir(file, entry.getName())); dest = new BufferedOutputStream(fos, BUFFER); while((count = zis...
1648238771053337_getpath.do
getpath.do
1 File f=new File("d:/abc") (d:\\abc) 2 File f=new File ("目录","文件名") 创建一个 File 封装对象 可以不存在 方法 -------------------------------------------- 文件、目录属性方法 文件、目录属性 ...
GetPath 1.23.031.rar 老版本的 ,速度很快的说。。扫目录很好啊啊~~
根目录 从工程开始 例如:F:\\test\\mv\\smash F盘下有个文件夹test,有在第二级目录下有个工程叫 smash 那么该包的方法可以定位到 F:\\test\\mv\\smash\\ 获得工程所在的根目录(绝对路径)
File style为要提取的文件类型,和Windows搜索文件一样,(例如要提取Txt格式的就设为 *.Txt) 文件类型设置好后点Percolate确认,就能过滤。 单击驱动器选项下的列表框中的文件进行提取,如果是全部提取则可用键盘中...
java 遍历 实体文件 排序方法 import java.io.File; import java.util.Date; import java.util.Iterator; import java.util.Set;... System.out.println(tempFile.getPath() + "\t"+date); } return null; } }