java项目获取文件路径总结

版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[+]

java获取文件路径的方式比较多,总结可能有疏漏。

1、java.lang.System.getProperty(String key)

System.getProperty("user.dir")这个方法的作用可以获取当前工程的根目录。
![我的一个项目](http://img.blog.csdn.net/20160322141415562)

比如获取上图中项目的根目录:C:\Users\Administrator\Desktop\Dictionary;利用这个方法,不管你的项目放在哪里,都已获取到当前的根目录。 
如果你需要获取当前项目的其他属性,比如jdk版本,运行系统版本等,利用System.out.println(System.getProperties())输出所有属性,查看哪些是你所需要的。 
所以,如果我们要获取上图中images文件里的文件,我们可以通过System.getProperty(“user.dir”)+”\\images\\user.jpg”)获取文件路径(双斜杠因为”\”在java中转义字符,所以”\\”才表示”\”),输出后得到: 
C:\Users\Administrator\Desktop\Dictionary\images\user.jpg。

2、java.io.File.File(String pathname)


 1. 第一种

        File directory = new File("");//设定为当前文件夹
        System.out.println(directory.getCanonicalFile());//返回类型为File
        System.out.println(directory.getCanonicalPath());//获取标准的路径  ,返回类型为String
        System.out.println(directory.getAbsoluteFile());//返回类型为File
        System.out.println(directory.getAbsolutePath());//获取绝对路径,返回类型为String

输出:

        C:\Users\Administrator\Desktop\Dictionary
        C:\Users\Administrator\Desktop\Dictionary
        C:\Users\Administrator\Desktop\Dictionary
        C:\Users\Administrator\Desktop\Dictionary

2、第二种
        File directory = new File(".");//设定为当前文件夹
        System.out.println(directory.getCanonicalFile());//返回类型为File
        System.out.println(directory.getCanonicalPath());//获取标准的路径  ,返回类型为String
        System.out.println(directory.getAbsoluteFile());//返回类型为File
        System.out.println(directory.getAbsolutePath());//获取绝对路径,返回类型为String

输出:

        C:\Users\Administrator\Desktop\Dictionary
        C:\Users\Administrator\Desktop\Dictionary
        C:\Users\Administrator\Desktop\Dictionary\.
        C:\Users\Administrator\Desktop\Dictionary\.

3、第三种

        File directory = new File("..");//设定为当前文件夹
        System.out.println(directory.getCanonicalFile());//返回类型为File
        System.out.println(directory.getCanonicalPath());//获取标准的路径  ,返回类型为String
        System.out.println(directory.getAbsoluteFile());//返回类型为File
        System.out.println(directory.getAbsolutePath());//获取绝对路径,返回类型为String

输出:

        C:\Users\Administrator\Desktop
        C:\Users\Administrator\Desktop
        C:\Users\Administrator\Desktop\Dictionary\..
        C:\Users\Administrator\Desktop\Dictionary\..
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

对于getCanonicalPath()函数,“.”就表示当前的文件夹,而”..“则表示当前文件夹的上一级文件夹 
对于getAbsolutePath()函数,则不管”.”、“..”,返回当前的路径加上你在new File()时设定的路径

对于String java.io.File.getPath()这个方法:

        File directory = new File("");
        System.out.println(directory.getPath()); //输出给定的路径字符串
        File directory = new File(".");
        System.out.println(directory.getPath()); //输出给定的路径字符串
        File directory = new File("..");
        System.out.println(directory.getPath()); //输出给定的路径字符串
        File directory = new File("images\user.jpg");
        System.out.println(directory.getPath()); //输出给定的路径字符串

分别输出:

        (空)
        .
        ..
        images\user.jpg
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

说明给什么,File.getPath()输出什么。

3 基于classpath 获取资源有以下三种方式:

URL url = this.getClass().getResource("resource_name");
   URL url = this.getClass().getClassLoader().getResource("resource_name");
   URL url = Thread.currentThread().getContextClassLoader().getResource("resource_name");

注意:this不能在main函数中使用,main函数中只能这样:
URL url = Test.class.getClassLoader().getClass().getResource("/images/user.jpg");
URL url = Test.class.getClassLoader().getClass().getClassLoader().getResource("/images/user.jpg");
否则会报错“Cannot use this in a static context”。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

第一种是通过Class类实例的getResource方法,后面两种都是ClassLoader类实例的getResource方法。Class.getResource()也是委托ClassLoader的getResource方法来实现的.所以,先说ClassLoader的getResource方法:

(1) ClassLoader的getResource方法参数不能以”/”开头,而且必须是从根目录开始查找, 
这里的根目录是classpath中的目录以及包含引用的jar.比如eclipse的默认将每个工程中Java类运行时的classpath设置为: 工程根目录/bin目录 以及 工程中引用的所有jar包.在编译的时候,将src目录结构拷贝到bin目录中,将java类编译成class文件后连同其他文件按src中原始目录结构拷贝到bin目录中。 
假设某个工厂的classpath如下(两个): 
/bin 
log4j-1.2.16.jar 
其中log4j-1.2.16.jar中有目录结构org\apache\log4j\ (与包org.apach.log4j) 对应,那么 查找bin目录下的test.txt文件使用下面方法ClassLoader.getResource(“test.txt”);注意这里ClassLoader.getResource方法的入参必须是从根目录开始查找,这里根目录就是classpath中的/bin。找 bin/level1/level2/ll.txt文件必须使用ClassLoader.getResource(“level1/level2/ll.txt”); //注意查找必须基于根目录(/bin),并且目录结构也要写对,不能用/开头。

(2) Class.getResource() 略有不同:

(a)可以通过相对路径查找,相对的是 当前实例的Class文件所在的包;
(b)也可以和ClassLoader.getResource()一样从根目录(classpath)开始查找,
但是此时传递给Class.getResource()的参数必须要用 "/" 开头,
否则就是相对查找了((a)中的情况)
其实,这种代码就是将/去掉,然后调用ClassLoader.getResource()
时间: 2024-10-19 20:58:32

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下任一类名也可(可以是不同包) 运行,结果如下:

C# 获取文件路径,读取项目中某程序集下文件

获取文件路径 ------------------------------------------------------------------------- winform获取文件路径: string str1 =Process.GetCurrentProcess().MainModule.FileName;//获得当前执行的exe的文件名.string str2=Environment.CurrentDirectory;//获取和设置当前目录的完全限定路径.string str3=Dire

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代码获取文件、文件流或字符串的编码方式

今天通过网络资源研究了一下如何使用Java代码获取文件.文件流或字符串的编码方式,现将代码与大家分享: package com.ghj.packageoftool; import info.monitorenter.cpdetector.io.ASCIIDetector; import info.monitorenter.cpdetector.io.ByteOrderMarkDetector; import info.monitorenter.cpdetector.io.CodepageDete

关于JAVA项目中CLASSPATH路径详解

自己看完总结:配置中"classpath: " 相当于输出目录,即编译后的class文件 所在目录:而 "file:" 是 启动目录而言,14 上服务器就是WEB-INF 下目录,本地项目就是项目根目录. 关于JAVA项目中CLASSPATH路径详解 分类: Java 2013-03-14 10:52 6845人阅读 评论(1) 收藏 举报 在dos下编译java程序,就要用到classpath这个概念,尤其是在没有设置环境变量的时候.classpath就是存放.c

Java扫描指定文件路径下的文件并且递归扫描其子目录下的所有文件

本文主要实现了扫描指定文件路径下的文件,递归扫描其子目录下的所有文件信息,示例文件为: 要求将后缀为.dat的文件夹信息也写入到数据库中,然后将.chk文件解析,将文件中对应的内容读出来写入到数据库,对应类为ChkFileParseFactroy,本文文件发现代码为: 1 package com.src.service.impl; 2 3 import java.io.File; 4 import java.net.InetAddress; 5 import java.net.NetworkIn

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