• java工程中的相关路径


    一、路径

      绝对路径: 指的是文件在系统中的真实路径(物理路径)。
      相对路径: 指的是文件相对某个目录的相对路径。
      对于java application 工程来说,当编写完一个类之后,class文件会编译,默认存放在bin目录中。
    存放的目录结构安装包的命名依次存放。同时一些在src目录,或其他Source Fodder目录中的资源文件也会被编译到bin目录中(有些构建的不是存放在bin目录中,这根据构建工具而异)。

      而当程序运行的时候,执行的就是bin目录中的class文件,读取的资源文件也是bin目录中的。
    对于java web 工程来说,当编写完一个类之后,class文件默认会被编译到这个web工程下的Webapp目录下的WEB-INF生成的classes目录中。
    存放的目录结构安装包的命名依次存放。同样一些在src目录,或其他Source Fodder目录中的资源文件也会被编译到classes目录中。

      而我们对路径的操作基本上是基于class文件所在的目录进行的。

    二、示例

      1、通过class 与 ClassLoader获取路径

     1     //testapp为工程名称
     2     // 返回编译后的class-path路径 
     3     //路径:    /D:/web-create/testapp/target/classes/
     4     System.out.println(Thread.currentThread().getContextClassLoader().getResource("").getPath()); 
     5     //路径:    /D:/web-create/testapp/target/classes/com                 此处的com目录必须要存在,否则会抛异常
     6     System.out.println(ClassLoader.getSystemResource("com").getPath());                
     7     //路径: /D:/web-create/testapp/target/classes/                    编译代码后的classes路径             
     8     System.out.println(ClassLoader.getSystemResource("").getPath());     
     9     //路径:    /D:/web-create/testapp/target/classes/                  编译代码后的classes路径 
    10     System.out.println(Test.class.getResource("/").getPath());            
    11     //路径: /D:/web-create/testapp/target/classes/com/                Test.class文件所在路径 
    12     System.out.println(Test.class.getResource("").getPath());            
    13     //路径: /D:/web-create/testapp/target/classes/com/Test.class    Test.class文件全路径
    14     System.out.println(Test.class.getResource("Test.class").getPath()); 

      2、webapp中通过request,session等获取路径

     1     HttpServletRequest request = null;
     2     ///返回web应用名称:         testapp    
     3     System.out.println(request.getContextPath());
     4     
     5     // 当前web应用的绝对路径(后面没有)   E:/web-create	estappsrcmain
    esourceswebapp
     6     System.out.println(request.getSession().getServletContext().getRealPath(""));
     7 
     8     // 当前web应用的绝对路径(后面有)     E:/web-create	estappsrcmain
    esourceswebapp
     9     System.out.println(request.getSession().getServletContext().getRealPath("/"));        
    10     
    11     // 当前web应用中指定目录绝对路径         E:/web-create	estappsrcmain
    esourceswebapp
    esourceimage  
    12     System.out.println(request.getSession().getServletContext().getRealPath("/resource/image")); 
    13 
    14     //获取PATH目录下的子目录以集合的形式返回():[/resource/image/2015/]
    15     System.out.println(request.getSession().getServletContext().getResourcePaths("/resource/image"));
    16 
    17     // 当前web应用中指定目录绝对路径         E:/web-create	estappsrcmain
    esourceswebapp
    esourceimage
    18     System.out.println(request.getRealPath("/resource/image"));// 不建议使用,用 ServletContext.getRealPath()方法代替

      3、文件相关路径

        //路径: D:   工程所在根目录
        System.out.println(new File("/").getAbsolutePath());      
        //路径: D:web-create	estappcom
        System.out.println(new File("com").getAbsolutePath());  
        //路径:D:web-create	estapp 
        System.out.println(new File("").getAbsolutePath());      
        //路径:D:web-create	estapp
        System.out.println(System.getProperty("user.dir"));  
        // class path 路径
        System.out.println(System.getProperty("java.class.path")); 

      4、加载src(实际上是bin目录或classes目录下的)下的properties

     1     //加载文件相关
     2     InputStream is = new FileInputStream(ClassLoader.getSystemResource("").getPath() + "config.redis.pool.properties");//该种方式与下面得到的结果一致
     3     is = Test.class.getResourceAsStream("config.redis.pool.properties");//与下面结果一样
     4     is = Test.class.getResourceAsStream("/config.redis.pool.properties");
     5     //InputStream is = Test.class.getResourceAsStream("/com/config.redis.pool.properties");//参数是相对于classes目录下的文件全路径
     6     Properties properties = new Properties();
     7     properties.load(is);
     8     is.close();
     9     for(Object obj :properties.keySet()){
    10         System.out.println("key: " + obj + " value: " + properties.get(obj));
    11     }  
  • 相关阅读:
    js函数动态传参
    js 异步加载
    js 遍历
    安卓——implements——OnClickListener
    安卓——BroadcastReceiver
    关于Linux下的硬链接
    Linux 的文件类型
    linux 学习
    虚函数与重载函数的区别
    虚函数和友元
  • 原文地址:https://www.cnblogs.com/always-online/p/4284112.html
Copyright © 2020-2023  润新知