本文目录
- java中File类中getAbsolutePath()获取路径方法和线程的getPath()获取路径的方法有什么区别
- java 和 getAbsolutePath() 有中 file的getpath 啥区别
- file的getPath getAbsolutePath和getCanonicalPath的不同
- 关于java中使用getAbsolutePath()获取文件的绝对路径
- Java中getAbsolutePath()什么意思
- String datafile = new File(““).getAbsolutePath() + File.separator + “datafile“;这句话是什么意思啊
- getPath getAbsolutePath和getCanonicalPath的区别
java中File类中getAbsolutePath()获取路径方法和线程的getPath()获取路径的方法有什么区别
一个是绝对路径,一个是相对路径比如说你现在在c:/a/b/下面 有个x.txtnew File(“x.txt“).getPath()有可能得到x.txtgetAbsolutePath得到c:/a/b/x.txt
java 和 getAbsolutePath() 有中 file的getpath 啥区别
publicstaticvoidtest1(){Filefile1=newFile(“.\\test1.txt“);Filefile2=newFile(“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.txtD:\workspace\test\.\test1.txt-----默认绝对路径:取得路径相同------D:\workspace\test\test1.txtD:\workspace\test\test1.txt因为getPath()得到的是构造file的时候的路径。getAbsolutePath()得到的是全路径如果构造的时候就是全路径那直接返回全路径如果构造的时候试相对路径,返回当前目录的路径+构造file时候的路径
file的getPath getAbsolutePath和getCanonicalPath的不同
file的这几个取得path的方法各有不同,下边说说详细的区别概念上的区别:(内容来自jdk,个人感觉这个描述信息,只能让明白的人明白,不明白的人看起来还是有点难度(特别试中文版,英文版稍好些)所以在概念之后我会举例说明。如果感觉看概念很累就跳过直接看例子吧。看完例子回来看概念会好些。getPathpublic String getPath()将此抽象路径名转换为一个路径名字符串。所得到的字符串使用默认名称分隔符来分隔名称序列中的名称。 返回:此抽象路径名的字符串形式getAbsolutePathpublic String getAbsolutePath()返回抽象路径名的绝对路径名字符串。 如果此抽象路径名已经是绝对路径名,则返回该路径名字符串,这与 getPath() 方法一样。如果此抽象路径名是空的抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性 user.dir 指定。否则,使用与系统有关的方式分析此路径名。在 UNIX 系统上,通过根据当前用户目录分析某一相对路径名,可使该路径名成为绝对路径名。在 Microsoft Windows 系统上,通过由路径名指定的当前驱动器目录(如果有)来分析某一相对路径名,可使该路径名成为绝对路径名;否则,可以根据当前用户目录来分析它。 返回:绝对路径名字符串,它与此抽象路径名表示相同的文件或目录的 抛出: SecurityException - 如果无法访问所需的系统属性值。另请参见:isAbsolute()getCanonicalPathpublic 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.txtD:\workspace\test\.\test1.txt-----默认绝对路径:取得路径相同------D:\workspace\test\test1.txtD:\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.txtD:\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“);决定了结果.
关于java中使用getAbsolutePath()获取文件的绝对路径
你的逻辑没问题
但是你的循环体,只有一个耗时非常少的操作
控制台有字符数量的限制
4.所以,当你生大量字符输出到控制台的时候,并且循环速度很快,为了显示后面的数据,不得不覆盖掉前面的数据,而你前面的数据还没来得及看见
解决办法
第一种:增加循环体,每次循环耗费的时间,让其慢一点显示出来,一行一行的看明白
你可以在输出前,加入线程休眠500毫秒的代码
try {Thread.sleep(500);//线程休眠 500毫秒} catch (InterruptedException e) {e.printStackTrace();}
第二种,取消控制台输出字符限制
第三种:在其他目录创建一个文本文件,用于记录每一行的数据
Java中getAbsolutePath()什么意思
参见下面demo,你就知道它的含义了。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.txtD:\workspace\test\.\test1.txt-----默认绝对路径:取得路径相同------D:\workspace\test\test1.txtD:\workspace\test\test1.txt----------------------------------------------------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.txtD:\workspace\src\test1.txt--------------------------------------------public static void test3() throws Exception{ File file = new File(“D:\\Text.txt“); System.out.println(file.getCanonicalPath()); }(1),确定D盘下没有Text.txt这个文件,直接执行这段代码,得到的结果是:D:\Text.txt注意这里试大写的Text.txt(2)在D盘下建立一个文件,名叫text.txt,再次执行代码,得到结果D:\text.txt同样的代码得到不同的结果。
String datafile = new File(““).getAbsolutePath() + File.separator + “datafile“;这句话是什么意思啊
这个是获得一个绝对路径的方法, new File(““).getAbsolutePath() 取得项目所在服务器的存放位置就是绝对路径, File.separator 在windows是 \ unix是 / ,然后再加上一个字符串 “datafile“,其实就是得到datafile在服务器的绝对路径。
getPath getAbsolutePath和getCanonicalPath的区别
仅以程序为例说明。package test;import java.io.File;import java.io.IOException;public class TestFilePath { public static void main(String args) { // TODO Auto-generated method stub System.out.println(System.getProperty(“user.dir“)); try { System.out.println(“-----默认相对路径:取得路径不同------“); File file1 = new File(“..\\src\\test1.txt“); System.out.println(file1.getPath()); System.out.println(file1.getAbsolutePath()); System.out.println(file1.getCanonicalPath()); System.out.println(“-----默认相对路径:取得路径不同------“); File file = new File(“.\\test1.txt“); System.out.println(file.getPath()); System.out.println(file.getAbsolutePath()); System.out.println(file.getCanonicalPath()); System.out.println(“-----默认绝对路径:取得路径相同------“); File file2 = new File(“D:\\workspace\\test\\test1.txt“); System.out.println(file2.getPath()); System.out.println(file2.getAbsolutePath()); System.out.println(file2.getCanonicalPath()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}程序执行结果如下:F:\eclipseworkspace\testejb-----默认相对路径:取得路径不同------..\src\test1.txtF:\eclipseworkspace\testejb\..\src\test1.txtF:\eclipseworkspace\src\test1.txt-----默认相对路径:取得路径不同------.\test1.txtF:\eclipseworkspace\testejb\.\test1.txtF:\eclipseworkspace\testejb\test1.txt-----默认绝对路径:取得路径相同------D:\workspace\test\test1.txtD:\workspace\test\test1.txtD:\workspace\test\test1.txt结论:当输入为绝对路径时,返回的都是绝对路径。当输入为相对路径时:getPath()返回的是File构造方法里的路径,是什么就是什么,不增不减getAbsolutePath()返回的其实是user.dir+getPath()的内容,从上面F:\eclipseworkspace\testejb、F:\eclipseworkspace\testejb\..\src\test1.txt、F:\eclipseworkspace\testejb\.\test1.txt可以得出。getCanonicalPath()返回的就是标准的将符号完全解析的路径