`
hujin1979
  • 浏览: 78858 次
  • 性别: 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开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

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

    Java 基础核心总结 +经典算法大全.rar

    什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else if 多分支语句switch 多分支语句 ...

    Android开发应用实战详解源代码

    4.20 加载手机存储卡中的文件 4.21 小结 第5章 交互式服务 5.1 textview的花样 5.2 拨打电话程序 5.3 短信发送程序 5.4 e-mail发送程序 5.5 实现手机震动效果 5.6 图文提醒效果 5.7 状态栏提醒 5.8 检索通讯录 5.8.1...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    java面试题目与技巧1

    │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form...

    java面试题及技巧4

    │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    java面试题以及技巧

    │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form...

    java面试题及技巧3

    │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form...

    java面试题以及技巧6

    │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form...

    Think-In-Java:学习Java学习之路

    在IDEA中Maven项目的面板导入项目根目录下的pom.xml文件 Maven Projects找不到的童鞋,可以勾上IDEA顶部工具栏的视图-&gt;工具按钮,然后Maven Projects的面板就会出现在IDEA的右侧 找到各个Module的src路径下的类就...

    swing界面设计之JTree

    (十六) JTree应用示例——文件路径 103 AnimatedIconTreeExample.java源代码 103 //内部类NodeImageObserver.java源代码 105 //IconNodeRenderer.java源代码 106 //IconNode.java源代码 107 (十七) Swing 学习笔记 ...

    java在线考试系统.zip

    (必填)开发记录(时间倒序排列) 8/10-12 梁净净:修正考试页面,学生考试学生注册,学生成绩查询,学生成绩柱状图等,和管理员的增删教师。 8/10-12 段唯钧:教师的查询学生成绩,设计试卷,出卷,查看试卷功能等...

    gg:浏览器内多人坦克战斗游戏

    规划与进度开发设置安装Java 8 安装Docker 安装汇总npm install rollup -g 安装uglify-es npm install uglify-es -g 安装http文件服务器npm install http-server -g 安装gradle(确保gradle在路径中)仅运行客户端...

    asp.net知识库

    XPath中相对路径和绝对路径 XPath 简单语法 Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL...

    commute-time-aggregator:汇总上下班时间,以查看模式

    下载并安装Java开发工具包: : (您将需要一个Redhat帐户。) 使用Java 14(jdk-14.0.1-x64 MSI) 设置JAVA_HOME环境变量。 例如,JAVA_HOME = C:\ Program Files \ RedHat \ java-14-openjdk-14.0.1-1 从和...

    程序员5个刷题网站-tlmall-springboot-ii:Java企业级电商项目演进——Tomcat集群和Redis分布式

    注解式开发,包括注解式项目配置以及mybatis中sql语句 项目文件结构: tlmall-springboot-ii +- images | +- img_1_in_markdown.png | +- ... | +- img_n_in_markdown.png +- other | +- image.sherman....

Global site tag (gtag.js) - Google Analytics