java中file路径_Java中的文件路径

Java中的文件路径

今天一定在这里解决这个问题,通过路径读文件一般就3种方式,但他们完全不同:

1. File myFile=new File("myfile.txt");

上面这么写是从当前路径读文件,当前路径指启动当前Java进程的路径,不同的情况这个路径都不一样,在eclipse里一般是当前项目的路径,在 Servlet里一般就是Servlet容器的路径。这个路径的绝对值可以通过System.getProperty("user.dir"))取到。这个方法同时可以通过绝对路径取文件,如File myFile=new File("D:\\temp\\myfile.txt"); File myFile=new File("/usr/user1/myfile.txt");

2. InputStream myFileStream = this.getClass().getResourceAsStream("myfile.txt");

从当前类所在路径读文件, myfile.txt应该是和当前这个类在同一个目录中的文件。如果路径前放了个"/", 如this.getClass().getResourceAsStream("/myfile.txt"),那就是从当前classpath开始读了

3.InputStream myFileStream = this.getClass().getClassLoader().getResourceAsStream("myfile.txt");

这个容易和第2种混淆,它是指从classpath开始找文件,前面加不加"/"都一样,其实它相当与this.getClass().getResourceAsStream("/myfile.txt"), 与这个有相同效果的还有

Thread.currentThread().getContextClassLoader().getResourceAsStream("myfile.txt")或

Thread.currentThread().getContextClassLoader().getResourceAsStream("/myfile.txt")

ClassLoader.getSystemResource("myfile.txt")或

ClassLoader.getSystemResource("/myfile.txt")

下面这个代码

package com.test.path;

import java.io.File;

class TestPath {

public static void main(String[] args) throws Exception {

System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));

System.out.println(TestPath.class.getClassLoader().getResource(""));

System.out.println(ClassLoader.getSystemResource(""));

System.out.println(TestPath.class.getClassLoader().getResource(""));

System.out.println(TestPath.class.getResource(""));

System.out.println(TestPath.class.getResource("/"));

System.out.println(new File("").getAbsolutePath());

System.out.println(System.getProperty("user.dir"));

}

}

它的输出:

file:/C:/TestArena/bin/

file:/C:/TestArena/bin/

file:/C:/TestArena/bin/

file:/C:/TestArena/bin/

file:/C:/TestArena/bin/com/test/path/

file:/C:/TestArena/bin/

C:\TestArena

C:\TestArena

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值