java中的文件路径_Java中的文件路径问题

笔者是个菜鸟,路径问题在写项目时经常令我迷惑,所以在此写下总结。

一、相对路径

1、在Java中相对路径,相对的是JVM的启动路径,而一般来说就是在项目名称下启动的。

在这里我用的Eclipse写的示例,这是测试项目的目录

508097eeab6ae1ca5a1670f53ae39a02.png

示例代码:

public classDemo1 {public static void main(String[] args) throwsException{

File f1= new File("test1.txt");

File f2= new File("./test2.txt");

File f3= new File("src/test3.txt");

File f4= new File("test4.txt");

System.out.println(f1.exists()+":"+f1.getCanonicalPath());

System.out.println(f2.exists()+":"+f2.getCanonicalPath());

System.out.println(f3.exists()+":"+f3.getCanonicalPath());

System.out.println(f4.exists()+":"+f4.getCanonicalPath());

}

}

输出:

true:D:\spam\path\test1.txttrue:D:\spam\path\test2.txttrue:D:\spam\path\src\test3.txtfalse:D:\spam\path\test4.txt

说明:

①从示例中我们可以看到所有的文件都是相对于D:\spam\path这个路径建立的。

②"./test2"与"test1"表示的都是一样的语义,相对与当前JVM的启动目录

③"../test"表示相对于当前目录的上一级目录

④test4告诉我们File的语义表示的仅仅是一个路径

2、getPath()、getAbsolutePath()、getCanonicalPath()区别

示例:

public classDemo1 {public static void main(String[] args) throwsException{

File f1= new File("test1.txt");

File f2= new File("./test2.txt");

File f3= new File("src/test3.txt");

System.out.println(f1.exists()+":"+f1.getPath());

System.out.println(f2.exists()+":"+f2.getAbsolutePath());

System.out.println(f2.exists()+":"+f2.getCanonicalPath());

System.out.println(f2.exists()+":"+f2.getPath());

System.out.println(f3.exists()+":"+f3.getCanonicalPath());

}

}

输出:

true:test1.txttrue:D:\spam\path\.\test2.txttrue:D:\spam\path\test2.txttrue:.\test2.txttrue:D:\spam\path\src\test3.txt

说明:

①getPath():可以看到得到的就是创建File时的字符串

②getAbsolutePath():得到没有解析过的绝对路径

③getCanonicalPath():得到规范的绝对路径

3、加载文件Class.getResource(String path)

示例:

public classDemo2 {public static void main(String[] args) throwsException{

Class> c = Demo2.class;

System.out.println(c.getResource(""));

System.out.println(c.getResource("/"));

System.out.println(c.getResource("").toURI());

File f1= new File(c.getResource("/test3.txt").toURI());

System.out.println(f1.exists()+":"+f1.getPath());

}

}

输出:

file:/D:/spam/path/bin/test/file:/D:/spam/path/bin/file:/D:/spam/path/bin/test/

true:D:\spam\path\bin\test3.txt

说明:

getResource(String path)方法一般用于加载文件,且是相对于D:/spam/path/bin目录的,

bin目录与src目录基本对应,bin目录存放.class文件src目录存放.java文件。

绝对路径就不说了,很简单没啥可说的。

【推荐博客】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值