`

java web获取文件路径相关

阅读更多

转自:http://blog.csdn.net/appleprince88/article/details/11599805

 

       由于经常需要获取文件的路径,但是比较容易忘记,每次需要总需要查询,现在把这些方式写下来,方便自己的时候也方便大家了,如果大家在下面的方法遇到什么问题,可以留言。

一.Java文件获取路径方式:

各种获取方式如示例代码所示:

 

[java] view plaincopy
 
  1. package first.second;  
  2.   
  3. import java.io.File;  
  4.   
  5. public class GetPath {  
  6.   
  7.     public static void getPath()  
  8.     {  
  9.         //方式一  
  10.         System.out.println(System.getProperty("user.dir"));  
  11.         //方式二  
  12.         File directory = new File("");//设定为当前文件夹  
  13.         try{  
  14.             System.out.println(directory.getCanonicalPath());//获取标准的路径  
  15.             System.out.println(directory.getAbsolutePath());//获取绝对路径  
  16.         }catch(Exception e)  
  17.         {  
  18.             e.printStackTrace();  
  19.         }  
  20.         //方式三  
  21.         System.out.println(GetPath.class.getResource("/"));  
  22.         System.out.println(GetPath.class.getResource(""));  
  23.         //方式4  
  24.         System.out.println(GetPath.class.getClassLoader().getResource(""));  
  25.         System.out.println(GetPath.class.getClassLoader().getResource("source.xml"));  
  26.     }  
  27.     /** 
  28.      * @param args 
  29.      */  
  30.     public static void main(String[] args) {  
  31.         // TODO Auto-generated method stub  
  32.         GetPath.getPath();  
  33.     }  
  34.   
  35. }  

 

 

        其在java project项目下输出如下:

 

[plain] view plaincopy
 
  1. 方式一  
  2. D:\eclipse\juno_workspace\Test  
  3. 方式二  
  4. D:\eclipse\juno_workspace\Test  
  5. D:\eclipse\juno_workspace\Test  
  6. 方式三  
  7. file:/D:/eclipse/juno_workspace/Test/bin/  
  8. file:/D:/eclipse/juno_workspace/Test/bin/first/second/  
  9. 方式四  
  10. file:/D:/eclipse/juno_workspace/Test/bin/  
  11. file:/D:/eclipse/juno_workspace/Test/bin/source.xml  

 

        在Web project输出如下:

 

[plain] view plaincopy
 
  1. 方式一  
  2. D:\apache-tomcat-6.0.36\bin  
  3. 方式二  
  4. D:\apache-tomcat-6.0.36\bin  
  5. D:\apache-tomcat-6.0.36\bin  
  6. 方式三  
  7. file:/D:/apache-tomcat-6.0.36/webapps/ConsisPro/WEB-INF/classes/  
  8. file:/D:/apache-tomcat-6.0.36/webapps/ConsisPro/WEB-INF/classes/first/second/  
  9. 方式四  
  10. file:/D:/apache-tomcat-6.0.36/webapps/ConsisPro/WEB-INF/classes/  
  11. file:/D:/apache-tomcat-6.0.36/webapps/ConsisPro/WEB-INF/classes/source.xml  

 

 

         说明一下,实验类是放在first.second包下的,source.xml是src文件下的一个文件。在java project测试的项目名是Test,在web project测试的项目名是ConsisPro,还有就是 web project项目测试时运行在tomcat中,通过调用实验类GetPath产生的运行结果。

         从上面我们可以看出方式一和方式二在java project项目下是获取的项目根目录,而在web project项目下获取的是tomcat的bin目录。

         方式三当使用“/”时获取的是类编译后所在的目录,当不使用“/”是获取的是编译好类所在的目录,也就是前面加“/”产生的目录加上相应的包目录。

        方式四中第一个获取的也是类编译后的目录,第二个获取的是也就是我们放在src目录底下的文件,编译后放在类编译后的目录底下,当我们需要获取放在Src目录底下的文件时,用这个方式很方便。

 

二.获取文件的一些具体情况下的方式

         1.获取你存放在src目录下的文件,一般为配置文件,如下图1所示。推荐使用方式四的中的第二个方式,示例代码如下:

                     图1

 

[java] view plaincopy
 
  1. /* @param name   文件名  不包含路径 
  2.  */  
  3. public static  String getSrcPath(String name)  
  4. {  
  5.     String result=null;  
  6.     URL urlpath = GetPath.class.getClassLoader().getResource(name);   
  7.     String path=urlpath.toString();  
  8.     //remove the head "file:",if it exists  
  9.     if(path.startsWith("file"))  
  10.     {  
  11.         path=path.substring(5);  
  12.     }  
  13.     path.replace("/", File.separator);  
  14.     result=path;  
  15.     return result;  
  16. }  

 

          2.在java project获取与src文件夹并列的文件下的文件,如下图2所示。这种情况推荐使用方式一和方式二,下面以第一种方式给出示例代码:

                    

                                                图2

 

[java] view plaincopy
 
  1. // filename 文件名 不包含路径  
  2. // ...args  文件夹名      可以输入多个文件夹名参数  
  3. public static String getParallelPath(String filename,String ...args)  
  4. {  
  5.     String pre=System.getProperty("user.dir");  
  6.     String path=pre;  
  7.     for(String arg:args)  
  8.     {  
  9.         path+=File.separator+arg;  
  10.     }  
  11.     path+=File.separator+filename;  
  12.     if(path.startsWith("file"))  
  13.     {  
  14.         path=path.substring(5);  
  15.     }  
  16.     path.replace("/", File.separator);  
  17.     return path;  
  18. }  

 

          3.如果希望无论在java project或者web project项目使用类包底下的一些文件,如下图3所示。这种情况可以使用方式三中的第二种方式,使用示例代码如下:

                      

                                                图3

 

[java] view plaincopy
 
  1. public static String getPackagePath(String filename)  
  2.     {  
  3.         String result=null;  
  4.         URL urlpath=GetPath.class.getResource("");  
  5.         String path=urlpath.toString();  
  6.         if(path.startsWith("file"))  
  7.         {  
  8.             path=path.substring(5);  
  9.         }  
  10.         path.replace("/", File.separator);  
  11.         result=path+filename;  
  12.         return result;  
  13.     }  

 

 

         Tips:这个方法要在和要获取的文件在同一个包中才可以,在不同包中,需要使用其它方式

         4.当在web project项目下想获取WebRoot目录底下自定义目录文件下的文件,如下图4所示。这种情况推荐方式三和方式四,进行一些操作,下面是一个示例代码:

                

                                                图4

 

[java] view plaincopy
 
  1. //获取WebRoot目录  
  2.     public static String getWebRootPath()  
  3.     {  
  4.         URL urlpath=GetPath.class.getResource("");  
  5.         String path=urlpath.toString();  
  6.         if(path.startsWith("file"))  
  7.         {  
  8.             path=path.substring(5);  
  9.         }  
  10.         if(path.indexOf("WEB-INF")>0)  
  11.         {  
  12.             path=path.substring(0,path.indexOf("WEB-INF")-1);  
  13.         }  
  14.         path.replace("/", File.separator);  
  15.         return path;  
  16.     }  
  17.     //webroot  WebRoot目录  
  18.     //filename  文件名  
  19.     //...args   文件名所在文件夹,多个参数输入  
  20.     public static String getWebRootFilepath(String webroot,String filename,String ...args)  
  21.     {  
  22.         String pre=webroot;  
  23.         String path=pre;  
  24.         for(String arg:args)  
  25.         {  
  26.             path+=File.separator+arg;  
  27.         }  
  28.         path+=File.separator+filename;  
  29.         if(path.startsWith("file"))  
  30.         {  
  31.             path=path.substring(5);  
  32.         }  
  33.         path.replace("/", File.separator);  
  34.         return path;  
  35.     }  

 

三.空格问题

        可以用replaceAll("%20"," "); 来解决部分问题,遇到其它问题可以参考下面的文章http://www.2cto.com/kf/201108/100533.html。我认为当你得项目设为UTF-8的格式应该不会遇到空格问题。

 

参考文献

        1.      JAVA中获取路径的各种方式。http://gjt1244.blog.163.com/blog/static/19165205620118724046617/

        2.      Java获取当前文件路径。http://www.cnblogs.com/lostyue/archive/2011/06/27/2091686.html

        3.      JAVA彻底解决获取空格路径问题。http://www.2cto.com/kf/201108/100533.html

 

附录源代码

[java] view plaincopy
 
  1. package first.second;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.File;  
  5. import java.io.FileInputStream;  
  6. import java.io.FileNotFoundException;  
  7. import java.io.IOException;  
  8. import java.io.InputStreamReader;  
  9. import java.net.URL;  
  10.   
  11. public class GetPath {  
  12.   
  13.     public static void getPath()  
  14.     {  
  15.         //方式一  
  16.         System.out.println("方式一");  
  17.         System.out.println(System.getProperty("user.dir"));  
  18.         //方式二  
  19.         System.out.println("方式二");  
  20.         File directory = new File("");//设定为当前文件夹  
  21.         try{  
  22.             System.out.println(directory.getCanonicalPath());//获取标准的路径  
  23.             System.out.println(directory.getAbsolutePath());//获取绝对路径  
  24.         }catch(Exception e)  
  25.         {  
  26.             e.printStackTrace();  
  27.         }  
  28.         //方式三  
  29.         System.out.println("方式三");  
  30.         System.out.println(GetPath.class.getResource("/"));  
  31.         System.out.println(GetPath.class.getResource(""));  
  32.         //方式4  
  33.         System.out.println("方式四");  
  34.         System.out.println(GetPath.class.getClassLoader().getResource(""));  
  35.         System.out.println(GetPath.class.getClassLoader().getResource("source.xml"));  
  36.     }  
  37.     /** 
  38.      * @param name   文件名  不包含路径 
  39.      */  
  40.     public static  String getSrcPath(String name)  
  41.     {  
  42.         String result=null;  
  43.         URL urlpath = GetPath.class.getClassLoader().getResource(name);   
  44.         String path=urlpath.toString();  
  45.         //remove the head "file:",if it exists  
  46.         if(path.startsWith("file"))  
  47.         {  
  48.             path=path.substring(5);  
  49.         }  
  50.         path.replace("/", File.separator);  
  51.         result=path;  
  52.         return result;  
  53.     }  
  54.     // filename 文件名 不包含路径  
  55.     // ...args  文件夹名      可以输入多个文件夹名参数  
  56.     public static String getParallelPath(String filename,String ...args)  
  57.     {  
  58.         String pre=System.getProperty("user.dir");  
  59.         String path=pre;  
  60.         for(String arg:args)  
  61.         {  
  62.             path+=File.separator+arg;  
  63.         }  
  64.         path+=File.separator+filename;  
  65.         if(path.startsWith("file"))  
  66.         {  
  67.             path=path.substring(5);  
  68.         }  
  69.         path.replace("/", File.separator);  
  70.         return path;  
  71.     }  
  72.     public static void readFile(String filepath)  
  73.     {  
  74.         File file=new File(filepath);  
  75.         try {  
  76.             InputStreamReader sr=new InputStreamReader(new FileInputStream(file));  
  77.             BufferedReader br=new BufferedReader(sr);  
  78.             String line=null;  
  79.             while((line=br.readLine())!=null)  
  80.             {  
  81.                 System.out.println(line);  
  82.             }  
  83.               
  84.         } catch (FileNotFoundException e) {  
  85.             // TODO Auto-generated catch block  
  86.             e.printStackTrace();  
  87.         } catch (IOException e) {  
  88.             // TODO Auto-generated catch block  
  89.             e.printStackTrace();  
  90.         }  
  91.     }  
  92.     public static String getPackagePath(String filename)  
  93.     {  
  94.         String result=null;  
  95.         URL urlpath=GetPath.class.getResource("");  
  96.         String path=urlpath.toString();  
  97.         if(path.startsWith("file"))  
  98.         {  
  99.             path=path.substring(5);  
  100.         }  
  101.         path.replace("/", File.separator);  
  102.         result=path+filename;  
  103.         return result;  
  104.     }  
  105.     //获取WebRoot目录  
  106.     public static String getWebRootPath()  
  107.     {  
  108.         URL urlpath=GetPath.class.getResource("");  
  109.         String path=urlpath.toString();  
  110.         if(path.startsWith("file"))  
  111.         {  
  112.             path=path.substring(5);  
  113.         }  
  114.         if(path.indexOf("WEB-INF")>0)  
  115.         {  
  116.             path=path.substring(0,path.indexOf("WEB-INF")-1);  
  117.         }  
  118.         path.replace("/", File.separator);  
  119.         return path;  
  120.     }  
  121.     //webroot  WebRoot目录  
  122.     //filename  文件名  
  123.     //...args   文件名所在文件夹,多个参数输入  
  124.     public static String getWebRootFilepath(String webroot,String filename,String ...args)  
  125.     {  
  126.         String pre=webroot;  
  127.         String path=pre;  
  128.         for(String arg:args)  
  129.         {  
  130.             path+=File.separator+arg;  
  131.         }  
  132.         path+=File.separator+filename;  
  133.         if(path.startsWith("file"))  
  134.         {  
  135.             path=path.substring(5);  
  136.         }  
  137.         path.replace("/", File.separator);  
  138.         return path;  
  139.     }  
  140.     public static void main(String[] args) {  
  141.         // TODO Auto-generated method stub  
  142. //      GetPath.getPath();  
  143. //      //1 test  
  144. //      System.out.println(GetPath.getSrcPath("source.xml"));  
  145. //      GetPath.readFile(GetPath.getSrcPath("source.xml"));  
  146. //      //2 test  
  147.         System.out.println(GetPath.getParallelPath("source.xml""my file"));  
  148.         GetPath.readFile(GetPath.getParallelPath("source.xml""my file"));  
  149. //      //3 test  
  150.         System.out.println(GetPath.getPackagePath("source.xml"));  
  151.         GetPath.readFile(GetPath.getPackagePath("source.xml"));  
  152.           
  153.     }  
  154.   
分享到:
评论

相关推荐

    JAVA中获取各种路径

    此方法返回类的资源路径,通常用于获取与类相关的资源文件,例如`/D:/TEST/WebRoot/WEB-INF/classes/pack/`,这在加载配置文件、模板等静态资源时非常有用。 #### (2) 获取工作目录路径:`System.getProperty("user...

    java项目中获取路径详解

    特别是在 Java Web 项目中,获取路径变得更加复杂。下面我们将详细讨论 Java 项目中获取路径的方法和注意事项。 获取相对路径 在 Java 项目中,获取相对路径可以使用 `getResource` 方法。这个方法可以返回当前类...

    JAVA获取各种路径总结

    - 这些方法非常灵活,可以用于获取各种类型的资源文件路径。 通过以上介绍,我们可以看到,在Java开发中,无论是Web开发还是普通的Java应用程序开发,获取路径都是一个非常重要且实用的功能。掌握这些方法,可以...

    java Web 中相对路径绝对路径问题总结

    如果需要获取文件的实际物理路径,可以通过`application.getRealPath(request.getRequestURI())`实现。而获取当前Web应用的根目录实际物理路径,则使用`application.getRealPath("/")`。 #### 3.2 Servlet获取当前...

    JAVA获取项目路径.doc

    在Java开发中,获取项目的路径是一个非常常见的需求,尤其是在处理文件读写、资源定位等场景时尤为重要。本文将详细介绍如何通过不同的方法来获取项目的各种路径,并结合示例代码进行说明。 #### System....

    Java获取Tomcat下war包部署的Web工程根目录路径的方法

    开发web工程时经常要获取工程的根目录,自己用Java实现的获取Tomcat下war包部署的Web工程根目录路径的方法,主要利用web工程默认的目录结构,此外也可以指定工程名称获取工程目录的绝对路径

    WEB 项目中JAVA取得WEBROOT物理路径

    在Java Web开发中,获取WEB-INF目录或者更广泛的WEBROOT(Web应用的根目录)的物理路径是一项常见的需求。这通常涉及到服务器环境变量、Servlet API的使用以及对Web应用部署结构的理解。以下将详细讲解如何在Java中...

    总结一下java获取路径几种途径

    自Java 7起,引入了`java.nio.file`包下的`Path`类,其对文件路径的操作更为直观和方便。 ```java // 获取Path对象,指向当前目录下的example.txt文件 Path path = Paths.get("example.txt"); // 获取绝对路径 Path...

    Java文件路径详解

    Java 文件路径详解是一种在 Java 中获取文件路径的方式。它可以将文件路径转换为 InputStream,以便于读取文件的内容。在 Java 中,有两种方式可以获取文件路径,即使用 Class.getResourceAsStream() 和 ClassLoader...

    java获取路径的各种方法

    在Java编程中,获取路径是常见的操作,尤其是在Web应用程序开发中。本文主要介绍Java中获取路径的各种方法,包括绝对路径和相对路径的概念,以及在JSP和Servlet中的具体实现。 首先,理解基本概念: 1. **绝对路径...

    java本地与web页面路径获取

    如何在java中获取文件的绝对路径,以及在java web开发中得到文件的绝对路径。

    在JAVA文件中获取该项目的相对路径.doc

    下面将详细介绍在 JAVA 文件中获取项目的相对路径的相关知识点。 1. 绝对路径和相对路径的概念 在讨论获取项目的相对路径之前,我们需要了解绝对路径和相对路径的概念。绝对路径是指文件或目录在硬盘上的真正路径...

    普通java类获取绝对路径

    在Java Web环境中,类似的功能可以通过`ServletContext`的`getRealPath()`方法实现,它接受一个相对于Web应用的虚拟路径,返回服务器上的实际文件路径。 4. **获取项目工程路径**:对于Eclipse这样的IDE,你可能想...

    java 获取项目文件路径实现方法

    在Java编程中,获取项目文件路径是常见的需求,特别是在处理资源文件、配置文件或进行文件操作时。这里我们将深入探讨几种不同的方法来实现这一目标,同时解析每种方法的适用场景和返回路径的特点。 1. `this....

    JAVA中如何得到文件路径.pdf

    ### JAVA中如何获取文件路径详解 #### 一、概述 在Java编程中,获取文件路径是一项基础而重要的技能。无论是处理本地文件还是部署在Web容器中的应用,了解如何正确地获取文件路径对于程序的正常运行至关重要。本文...

    java绝对路径和相对路径

    本文将详细介绍如何在Java中获取不同类型的路径,包括Web服务器下的文件路径、本地路径以及相对路径。 #### 一、获取Web服务器下的文件路径 在Java Web开发中,获取Web服务器下的文件路径是非常常见的需求。主要有...

    基于JAVA文件中获取路径及WEB应用程序获取路径的方法

    在Java文件中获取路径和WEB应用程序获取路径是非常重要的,因为它们可以帮助开发者更好地理解和操作文件路径。本文将详细介绍基于JAVA文件中获取路径及WEB应用程序获取路径的方法,并提供了多种获取路径的技术。 1....

    ajax 获取文件路径

    这里提到的"ajax jsp获取本地文件夹所有的路径"是一个示例,它展示了如何利用AJAX和JSP(JavaServer Pages)来获取并显示本地文件夹中的所有文件路径。这个案例对于实现文件管理器或类似功能非常有用。 首先,让...

    读取webroot文件下的属性文件

    2. 使用`ServletContext`的`getResourceAsStream()`方法获取属性文件的输入流,传入相对于webroot的路径。 3. 创建`Properties`对象并使用输入流加载属性文件。 4. 使用`getProperty()`方法读取所需的属性值。 5. 不...

Global site tag (gtag.js) - Google Analytics