`
hujin1979
  • 浏览: 80188 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAVA开发中文件路径汇总

 
阅读更多
1、文件是demo.xml,位置在com.xxx.app包下,你可以用Class.getResourceAsStream("com/xxx/app/demo.xml") 
所有classpath可访问的路径都可以用这种方式
 
2、file.getAbsolutePath()是获取文件当前的绝对路径,如果在Linux下,采取file.getAbsolutePath().replaceAll("\\\\", "/")后可构造java.net.URL对象:URL url = new URL("file:" + file.getAbsolutePath().replaceAll("\\\\", "/"))
 
3、想知道class运行的当前目录,可使用System.out.println(new File(".").getAbsolutePath())获得,默认情况下new File("/")代表的目录为:System.getProperty("user.dir")
 
4、相对路径表示说明:
  • FileInputStream fis=new FileInputStream("images/"+id+".jpg"),表示当前运行的.class目录下有一个images目录,里面有特定的jpg图片
  • FileInputStream fis=new FileInputStream("../webapps\\axis2\\WEB-INF/pojo/images/"+id+".jpg"),../表示当前目录的上一级目录
  • new FileInputStream("./mysource.properties"),这样写的路径是在当前jar包退出路径下有一个文件名为mysource.properties这样的配置文件
  • 在Servlet中,"/"代表Web应用的根目录
5、JSP中获得当前应用的相对路径和绝对路径
  • 根目录所对应的绝对路径:request.getRequestURI()
  • 文件的绝对路径  :application.getRealPath(request.getRequestURI())
  • 当前web应用的绝对路径 :application.getRealPath("/")
  • 取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
6、Servlet中获得当前应用的相对路径和绝对路径
  •     根目录所对应的绝对路径:request.getServletPath();
  •     文件的绝对路径request.getSession().getServletContext().getRealPath(request.getRequestURI())
  •     当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/")   
    (ServletContext对象获得几种方式:    
    javax.servlet.()    
    javax.servlet.jsp.PageContext.getServletContext()    
    javax.servlet.ServletConfig.getServletContext()    
    )
 
测试代码:    
    import java.io.File;
    
    public class FileTest {
    
    public static void main(String[] args) throws Exception {
    
      System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
    
      System.out.println(FileTest.class.getClassLoader().getResource(""));
    
      System.out.println(ClassLoader.getSystemResource(""));
    
      System.out.println(FileTest.class.getResource(""));
    
      System.out.println(FileTest.class.getResource("/")); //Class文件所在路径
    
      System.out.println(new File("/").getAbsolutePath());
    
      System.out.println(System.getProperty("user.dir"));    
     }    
    }
 
获取Java程序运行的路径 | 获取当前jar包的路径
public class MyPath {
 
    public static String getProjectPath() { 
       java.net.URL url = MyPath.class.getProtectionDomain().getCodeSource().getLocation();
 
       String filePath = null;
       try {
           filePath = java.net.URLDecoder.decode(url.getPath(), "utf-8");
       } catch (Exception e) {
           e.printStackTrace();
       }
 
       if (filePath.endsWith(".jar"))
          filePath = filePath.substring(0, filePath.lastIndexOf("/") + 1);
 
        java.io.File file = new java.io.File(filePath);
        filePath = file.getAbsolutePath();
        return filePath;
  }   
 
    public static String getRealPath() {
        String realPath = MyPath.class.getClassLoader().getResource("").getFile();
        java.io.File file = new java.io.File(realPath);
        realPath = file.getAbsolutePath();
 
        try {
           realPath = java.net.URLDecoder.decode(realPath, "utf-8");
        } catch (Exception e) {
           e.printStackTrace();
       }
       return realPath;
    }   
 
    public static String getAppPath(Class<?> cls){ 
       //检查用户传入的参数是否为空 
        if(cls==null)  
        throw new java.lang.IllegalArgumentException("参数不能为空!");       
 
        ClassLoader loader=cls.getClassLoader(); 
        //获得类的全名,包括包名 
        String clsName=cls.getName();
        //此处简单判定是否是Java基础类库,防止用户传入JDK内置的类库 
        if(clsName.startsWith("java.")||clsName.startsWith("javax.")) {
        throw new java.lang.IllegalArgumentException("不要传送系统类!");
        }
 
        //将类的class文件全名改为路径形式
        String clsPath= clsName.replace(".", "/")+".class";
        //调用ClassLoader的getResource方法,传入包含路径信息的类文件名 
        java.net.URL url =loader.getResource(clsPath); 
        //从URL对象中获取路径信息 
        String realPath=url.getPath(); 
 
        //去掉路径信息中的协议名"file:" 
        int pos=realPath.indexOf("file:"); 
        if(pos>-1) {
        realPath=realPath.substring(pos+5); 
        }
 
        //去掉路径信息最后包含类文件信息的部分,得到类所在的路径 
        pos=realPath.indexOf(clsPath); 
        realPath=realPath.substring(0,pos-1); 
        //如果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名 
        if(realPath.endsWith("!")) {
        realPath=realPath.substring(0,realPath.lastIndexOf("/"));
        }
        java.io.File file = new java.io.File(realPath);
        realPath = file.getAbsolutePath();      
 
        try{ 
        realPath=java.net.URLDecoder.decode(realPath,"utf-8"); 
        }catch(Exception e){
        throw new RuntimeException(e);
        } 
        return realPath; 
    }//getAppPath定义结束 
 
使用Jar包,在Tomcat的运行结果如下:
 
ProjectPath: D:\J2EE\Tomcat 6.0\webapps\MyService1WebP\WEB-INF\lib
 
RealPath: D:\J2EE\Tomcat 6.0\webapps\MyService1WebP\WEB-INF\classes
 
Apppath: D:\J2EE\Tomcat 6.0\webapps\MyService1WebP\WEB-INF\classes
分享到:
评论

相关推荐

    Java开发常见问题汇总.ppt

    在Java开发过程中,遇到的问题多种多样,从环境配置到代码编写,每个环节都有可能出现问题。以下是一些关于Java开发的常见问题及其解决方法。 首先,确保Java开发环境的正确安装和配置。在Windows系统中,可以通过...

    java的文件操作汇总

    File类是Java中用来处理文件和目录的对象,它并不直接参与文件内容的读写,而是提供了诸如获取文件路径、文件名、是否为文件或目录、修改时间等元数据的方法。在处理文件或目录路径时,使用File对象可以避免平台相关...

    java重复文件查找

    在Java编程领域,重复文件查找是一项常见的需求,尤其是在大型项目或者资源管理中。这个程序能够帮助用户在指定的目录下高效地找出所有重复的.java和.class文件,这对于我们理解和优化项目结构、节省存储空间至关...

    blackberry java开发相关资料汇总

    "blackberry java开发相关资料汇总" 这个标题表明了这是一个关于BlackBerry平台上使用Java进行应用程序开发的资源集合。BlackBerry曾是智能手机市场的先驱,尤其是在企业级应用方面,它提供了强大的Java SDK和开发...

    java开发科安装程序exe项目打包安装exe程序汇总整理.doc

    Java开发中将程序打包成可执行的.exe安装程序是一个复杂但必要的过程,尤其对于希望在Windows平台上分发Java应用程序的开发者。以下是一个详细的步骤指南,包括使用JFrame标签的Java项目如何通过exe4j和Inno Setup...

    java开发岗位面试题汇总

    ### Java开发岗位面试题汇总分析 #### Zookeeper详解 Zookeeper是一种分布式的、开放源码的协调服务。它为分布式应用提供一致性服务,用于维护配置信息、命名、提供分布式同步和组服务等。 - **核心功能**:...

    Java水晶报表开发技术

    在Java开发中,使用水晶报表的关键步骤如下: 1. 添加依赖:将水晶报表的JAR库添加到项目的类路径中,这通常通过Maven或Gradle等构建工具完成。 2. 创建报表:在水晶报表设计器中创建报表模板,保存为.RPT文件。 3. ...

    Java开发常用指令全集.7z

    "Java开发常用指令全集.7z"中的文档"Java开发常用指令全集.doc"很可能是对这些重要指令的详细汇总。以下是基于Java开发的一些关键指令的详解: 1. **javac**:Java编译器,用于将源代码(.java文件)编译成可执行的...

    JAVA开发环境搭建.pdf

    根据提供的文件内容,可以总结出以下关于JAVA开发环境搭建的知识点: 1. JDK安装与配置 文档提到了JDK(Java Development Kit)的安装与配置,JDK是进行Java编程的必要软件开发包。安装JDK时通常包括JRE(Java ...

    Java编程基础知识点汇总习题集.pdf

    - **JDK**:Java开发工具包,包含了JRE以及开发工具,如编译器和调试器。 3. **JDK环境变量配置**: - **PATH**环境变量:设置可执行文件的路径,多个路径用分号或逗号分隔。 - **CLASSPATH**环境变量:指定Java...

    Java编程基础知识点汇总习题集-答案(吐血推荐).doc

    * 建立Java开发环境,安装JDK,一般需要设置环境变量path和classpath * 编写一个Java源程序,其文件名为Test.java,则编译该源程序的命令为javac,运行该程序的命令为java,生成文档注释的命令为javadoc 选择题 1....

    JAVA编程经验汇总.txt

    在Java开发领域,积累丰富的实践经验对于提升个人技能至关重要。本文将根据提供的文件信息,总结并深入探讨几个重要的Java编程知识点。 #### 1. Java与C++面向对象思想的区别 学习Java时,很多开发者都有C++背景。...

    Java打包成jar文件,以及将jar文件导出为exe文件方法汇总.pdf

    Java开发完成后,通常需要将项目打包成可分发的形式,最常见的就是jar文件。jar文件是Java的归档文件,它可以包含类、资源、元数据等,便于部署和执行。以下是两种将Java项目打包成jar文件的方法: 方法一:使用...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例078 从字符串中分离文件路径、 文件名及扩展名 98 实例079 判断手机号的合法性 99 实例080 用字符串构建器追加字符 100 实例081 去掉字符串中的所有空格 101 实例082 汉字与区位码的转换 102 第5章 面向对象技术...

    java报表工具开发详细手册

    JasperReport与iReport是Java报表开发领域的强大工具组合,通过本手册的学习,开发者将能够掌握这些工具的基本操作和高级功能,从而在实际项目中高效地完成报表设计与开发工作。无论是入门还是进阶,这份手册都将是...

Global site tag (gtag.js) - Google Analytics