Java中的文件路径

通常情况下,在Java项目中,我们使用的路径都是在拿到类加载路径后,根据相对位置,使用

FilePathTest.class.getResourceAsStream(relativePath);拿到文件。

今天小生不使用classPath,而是直接去使用相对路径来试验。

小生的work space路径是 E:\workspace\springMVCStudy,在该work sapce下创建Java Project,目录如下。

1. 拿到new File("")所对应的绝对路径。

在MyUrlDemo类中,通过

File directory = new File("");

String courseFile = directory.getCanonicalPath();

System.out.println("项目根路径:" + courseFile);

我们直接拿到的是项目根路径。

结果是:::E:\workspace\springMVCStudy\testFilePath

2. test1.txt的路径

由于test1.txt位于项目的根路径下,我们可以直接使用如下方式拿到。

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

3. test2.txt的路径

由于test2.txt位于src下,照猫画虎

File file2 = new File("src\\test2.txt");

4. test3.txt的路径

由于test3.txt位于src下,再次照猫画虎

File file2 = new File("src\\com\\rock\\testFilePath\\test3.txt");

这样我们拿到了3个文件,但是这样并不保险。因为在开发环境中,我们的文件结构是这样的,但是在测试环境和生产环境中,

我们的代码都是编译之后才才去运行。

在编译之后,上面的test1.txt不能被打到jar包中,也就是说,就不能再通过上面的方法访问test1.txt了。

对于test2.txt和test3.txt,也不能通过上述方法访问,这是因为编译之后就没有src目录了。

以下两种方法可以查看对应的路径,根据该路径可以拼出相对路径,然后使用相应的getResourceAsStream()得到文件的输入流。

1. 获取类的加载路径

当前类的加载路径::this.getClass().getResource("").getPath() 或者MyURLDemo.class.getResource("").getPath()

类加载的根路径::: this.getClass().getResource("/").getPath()

2. 获取类加载器的路径

this.getClass().getClassLoader().getResource("").getPath();  结果等同于类加载的根路径

附测试代码:

package com.rock.test.filePath;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class FilePathTest {

    public static void main(String[] args) {
        //使用文件相对路径
        File file1 = new File("test1.txt");
        System.out.println("test1.txt exists " + file1.exists());

        File file2 = new File("src\\test2.txt");
        System.out.println("test2.txt exists " + file2.exists());

        File file3 = new File("src\\com\\rock\\test\\filePath\\test3.txt");
        System.out.println("test3.txt exists " + file3.exists());

        InputStream stream = FilePathTest.class.getResourceAsStream("/test2.txt");
//        InputStream stream = FilePathTest.class.getResourceAsStream("test3.txt");
//        InputStream stream = FilePathTest.class.getClassLoader().getResourceAsStream("test2.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
        String line = null;
        try {
            while((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        //使用类加载路径获取test2.txt
        File file2ByLoard = new File(FilePathTest.class.getResource("/").getPath() + "\\test2.txt");
        System.out.println("test2.txt exists by load " + file2ByLoard.exists());

        File file2ByLoarder = new File(FilePathTest.class.getClassLoader().getResource("").getPath() + "\\test2.txt");
        System.out.println("test2.txt exists by loader " + file2ByLoarder.exists());

        File file2ByClasspath = new File(System.getProperty("java.class.path") + "\\test2.txt");
        System.out.println("test2.txt exists by Classpath " + file2ByClasspath.exists());

    }

}
时间: 2024-10-11 17:00:58

Java中的文件路径的相关文章

java中获取文件路径的几种方式

http://xyzroundo.iteye.com/blog/1116159关于绝对路径和相对路径: 绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt 代表了test.txt文件的绝对路径.http://www.sun.com/index.htm也代表了一个URL绝对路径.相对路径:相对与某个基准目录的路径.包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的跟目录.和物理路径的相对表

java 中获取文件路径

文件目录如下: 配置文件:firehosetos3sample.properties在src目录下面第一层,与包是一层的 在Getpath_ClassLoader.java类中: System.out.println(Getpath_ClassLoader.class.getResource("/firehosetos3sample.properties")); Getpath_ClassLoader为该类类名,将其替换为src下任一类名也可(可以是不同包) 运行,结果如下:

JAVA中获取项目文件路径

在java中获得文件的路径在我们做上传文件操作时是不可避免的. web 上运行 1:this.getClass().getClassLoader().getResource("/").getPath(); this.getClass().getClassLoader().getResource("").getPath();  得到的是 ClassPath的绝对URI路径.如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.wa

java中Jnotify文件监视库的使用

jnotify-0.94 下载地址:http://download.csdn.net/detail/zxnlmj/7499157 本人测试环境为win7环境,使用Myeclipse 1.建一个java或者javaweb项目... 2.将jnotify-lib-0.94压缩包解压缩,添加其中的jnotify-0.94.jar到项目中(java项目需要手动build to path,javaweb不需要). 3.建立测试类JnotifyTest.java如下,使用junit进行测试: package

Java中的文件操作

在使用计算机编程中,常常会用到对于文件的操作,以下是我对于Java中文件的相关内容学习之后的一个总结和在学习过程中遇到的一些问题. 一.什么是文件 对于文件进行操作,首先我们要知道什么是文件.在此之前,我们要知道,计算机其实就是一个文件系统.在计算机中,我们能在硬盘中看到的所有东西都叫文件.由此看来,计算机中文件是一个很广的范围.事实上,计算机中文件被分为了3种,一个是标准文件,一个是目录文件,还有一个就是虚拟内存文件. 这三种对于文件的分类没有一个明确的定义,后缀名是(.txt..doc..m

Java研究之文件路径的读取详解

 记得在操作系统中了解到文件读取有两种方式,当然这在各编程语言中也是通用的,所以java路径也分,相对和绝对路径.上章我们分享了Java研究之学习设计模式-组合模式详解有兴趣的朋友可以去看下. 绝对路径 绝对路径URI ,听着和URL很相似,那我们就来看看吧. URI(Uniformresource Identifier)统一资源标示符.URL统一资源定位符,是一个定位器,还说明了具体如何找到资源.所以他们就有一种抽象和继承的关系.URI抽象的说明了统一资源表示符号,而URL是具体的标识符的

Java工程得到文件路径

System.out.println(System.getProperty("user.dir"));//得到工程所在磁盘路径 String mailFilePath = new File("WebRoot").getAbsolutePath()+"\\file\\maiList.txt";//得到webRoot下file文件夹下maiList.txt所在磁盘路径 Java工程得到文件路径,布布扣,bubuko.com

Java中读取文件

Java中读取文件,去除一些分隔符,保存在多维数组里面 1 public void readFile(String filePath) 2 { 3 File file=new File(filePath); 4 ArrayList<String[]> dataArray=new ArrayList<String[]>(); 5 try{ 6 String str=new String(); 7 BufferedReader in=new BufferedReader(new Fil

C#中的文件路径获取函数和文件名字获取函数小结

1. 获取绝对文件路径 代码如下: System.IO.Path.GetFullPath(string path) string fileName = "myfile.ext"; string path1 = @"mydir"; string path2 = @"\mydir"; string fullPath; fullPath = Path.GetFullPath(path1); fullPath = Path.GetFullPath(fil