精华内容
下载资源
问答
  • 最近在做项目的时候,自己写了一些配置参数的读取,将配置文件放到具体的位置,然后让程序根据当前类的路径寻找配置文件的路径,但是,发现eclipse的开发坏境下是可以顺利读取到指定路径下的配置文件中的配置参数的...

    最近在做项目的时候,自己写了一些配置参数的读取,将配置文件放到具体的位置,然后让程序根据当前类的路径寻找配置文件的路径,但是,发现eclipse的开发坏境下是可以顺利读取到指定路径下的配置文件中的配置参数的,

    但是当将项目放到Tomcat下  或者 将项目打包成可执行jar包之后,编译后的class文件却读取不到了开发环境下寻找的配置文件了。

    如果在 .java 文件中直接写// public static  String Config = "config.properties";  则该路径指向的就是项目的 src 的同级目录(直接将配置文件放到项目的根目录下)

    经过查找资料和进行验证,现将读取class文件相对路径下配置文件的方法汇总如下:

    方法一:使用System获取路径

    方法二:使用当前类的ProtectionDomain或者ClassLoader获取路径

    方法三:使用Thread获取路径

    方法一:

    示例:

     public static  final String URLConfig = System.getProperty("user.dir").replace("bin", "webapps")+"/URLConfig.properties";//这种是将配置文件放到Tomcat的webapps的目录下

    其中的 System.getProperty("user.dir")  为获取用户当前工作目录

    java的System.getProperty()方法可以获取的值

    获取的代码示例:

    public   class  SystemProperty {  
        public   static   void  main(String args[]) {     
        System.out.println("java_vendor:"  + System.getProperty( "java.vendor" ));     
        System.out.println("java_vendor_url:"      
                 + System.getProperty("java.vendor.url" ));     
        System.out.println("java_home:"  + System.getProperty( "java.home" ));     
        System.out.println("java_class_version:"      
                 + System.getProperty("java.class.version" ));     
        System.out.println("java_class_path:"      
                + System.getProperty("java.class.path" ));     
        System.out.println("os_name:"  + System.getProperty( "os.name" ));     
        System.out.println("os_arch:"  + System.getProperty( "os.arch" ));     
        System.out.println("os_version:"  + System.getProperty( "os.version" ));     
        System.out.println("user_name:"  + System.getProperty( "user.name" ));     
        System.out.println("user_home:"  + System.getProperty( "user.home" ));     
        System.out.println("user_dir:"  + System.getProperty( "user.dir" ));     
        System.out.println("java_vm_specification_version:"      
                + System.getProperty("java.vm.specification.version" ));     
        System.out.println("java_vm_specification_vendor:"      
                + System.getProperty("java.vm.specification.vendor" ));     
        System.out.println("java_vm_specification_name:"      
                + System.getProperty("java.vm.specification.name" ));     
        System.out.println("java_vm_version:"      
                + System.getProperty("java.vm.version" ));     
        System.out.println("java_vm_vendor:"      
                + System.getProperty("java.vm.vendor" ));     
        System.out     
                .println("java_vm_name:"  + System.getProperty( "java.vm.name" ));     
        System.out.println("java_ext_dirs:"      
                + System.getProperty("java.ext.dirs" ));     
        System.out.println("file_separator:"      
                + System.getProperty("file.separator" ));     
        System.out.println("path_separator:"      
                + System.getProperty("path.separator" ));     
        System.out.println("line_separator:"      
                + System.getProperty("line.separator" ));     
    }

     

    上面示例引用的博客地址:https://blog.csdn.net/capmiachael/article/details/51895823

     

    方法二:

    示例1:

    复制代码

    public static String getMyDIR(){//获取当前类文件的绝对路径
    String jarWholePath = ConfigerPraram.class.getProtectionDomain().getCodeSource().getLocation().getFile(); 
    try { 
    //保险起见,将路径进行decode转码
    jarWholePath = java.net.URLDecoder.decode(jarWholePath, "UTF-8"); 
    } catch (UnsupportedEncodingException e) { System.out.println(e.toString()); } 
    //获取jar包的上级目录
    String jarPath = new File(jarWholePath).getParentFile().getAbsolutePath(); 
    return jarPath;
    }

    复制代码

    示例2:

    复制代码

    /**
         * 获取项目所在路径
         * 
         * @return
         */
        public static String getRealPath() {
         //通过类加载器获取jar包的绝对路径
            String realPath = MyPath.class.getClassLoader().getResource("")
                    .getFile();
            java.io.File file = new java.io.File(realPath);
            realPath = file.getParentFile().getAbsolutePath(); //获取jar包的上级目录
    try {
           //路径decode转码
                realPath = java.net.URLDecoder.decode(realPath, "utf-8");
            } catch (Exception e) {
                e.printStackTrace();
            }  
        return realPath ; 
      }

    复制代码

     

     

    方法三:(该方法还未做验证,引用博客:https://blog.csdn.net/z69183787/article/details/22774537)

    Thread.currentThread().getContextClassLoader().getResource("")来得到当前的classpath的绝对路径的URI表示法

    Application可以通过new FileInputStream("xx.properties");直接在classes一级获取。关键是有时我们需要通过web修改配置文件,我们不 能将路径写死了。经过测试觉得有以下心得:

    1.servlet中读写。如果运用Struts 或者Servlet可以直接在初始化参数中配置,调用时根据servlet的getRealPath("/")获取真实路径,再根据String file = this.servlet.getInitParameter("abc");获取相对的WEB-INF的相对路径。
    例:
    InputStream input =Thread.currentThread().getContextClassLoader().getResourceAsStream("abc.properties"); 
    Properties prop = new Properties();
    prop.load(input);
    input.close();

    prop.setProperty("abc", “test");
    prop.store(new FileOutputStream(path), “–test–"); 
    out.close(); 

    2.直接在jsp中操作,通过jsp内置对象获取可操作的绝对地址。
    例:
    // jsp页面
    String path = pageContext.getServletContext().getRealPath("/");
    String realPath = path+"/WEB-INF/classes/abc.properties";

    //java 程序
    InputStream in = getClass().getClassLoader().getResourceAsStream("abc.properties"); // abc.properties放在webroot/WEB-INF/classes/目录下
    prop.load(in);
    in.close();

    OutputStream out = new FileOutputStream(path); // path为通过页面传入的路径
    prop.setProperty("abc", “abcccccc");
    prop.store(out, “–test–");
    out.close();

    3.只通过Java程序操作资源文件
    InputStream in = new FileInputStream("abc.properties"); // 相对路径,项目下的路径

    OutputStream out = new FileOutputStream("abc.properties");

     

    下面的参考解释引用于博客:https://www.cnblogs.com/gaoxing/p/4703412.html

     

    打个简单的比方,你一个WEB程序,发布到Tomcat里面运行。
    首先是执行Tomcat org.apache.catalina.startup.Bootstrap类,这时候的类加载器是ClassLoader.getSystemClassLoader()。
    而我们后面的WEB程序,里面的jar、resources都是由Tomcat内部来加载的,所以你在代码中动态加载jar、资源文件的时候,首先应该是使用Thread.currentThread().getContextClassLoader()。如果你使用Test.class.getClassLoader(),可能会导致和当前线程所运行的类加载器不一致(因为Java天生的多线程)。
    Test.class.getClassLoader()一般用在getResource,因为你想要获取某个资源文件的时候,这个资源文件的位置是相对固定的。

    java的类加载机制(jvm规范)是委托模型,简单的说,如果一个类加载器想要加载一个类,首先它会委托给它的parent去加载,如果它的所有parent都没有成功的加载那么它才会自己亲自来,有点儿像儿子使唤老子的感觉。

     

    如果你使用Test.class.getClassLoader(),可能会导致和当前线程所运行的类加载器不一致 :Class.getClassLoader() returns the class loader for the class. Some implementations may use null to represent the bootstrap class loader. This method will return null in such implementations if this class was loaded by the bootstrap class loader.

    展开全文
  • golang 获取路径 文件名 后缀

    千次阅读 2020-10-26 07:26:36
    实例如下: import ( "fmt" "os" "path/filepath" "path" ) files := "E:\\data\\test.txt... fmt.Println(paths, fileName) //获取路径中的目录及文件名 E:\data\ test.txt fmt.Println(filepath.Base(files

    实例如下:

    import (
        "fmt"
        "os"
        "path/filepath"
        "path"
    )
    
        files := "E:\\data\\test.txt"
        paths, fileName := filepath.Split(files)
        fmt.Println(paths, fileName)      //获取路径中的目录及文件名 E:\data\  test.txt
        fmt.Println(filepath.Base(files)) //获取路径中的文件名test.txt
        fmt.Println(path.Ext(files))      //获取路径中的文件的后缀 .txt

    路径需要注意,windows 和 linux 的区别 比如:实例中的 E:\data\test.txt 在linux下编译运行 无法正常解析的,需要使用linux的路径格式 比如 /root/test.txt

     

    展开全文
  • C++ 几个可以获取路径的函数

    千次阅读 2018-12-19 20:53:29
    最近工作中看到的几个没见过的函数,都是关于获取路径的总结一下。 首先解释一下什么是绝对路径和相对路径: 在linux 下 绝对路径 是由根目录 " / " 写起, 比如: /usr/bin/test 相对路径 不是由根目录写...

    最近工作中看到的几个没见过的函数,都是关于获取路径的总结一下。
    首先解释一下什么是绝对路径和相对路径:
    在linux 下 绝对路径 是由根目录 " / " 写起, 比如: /usr/bin/test
    相对路径 不是由根目录写起, 比如当用户进入到 /home目录,然后再进入到soft目录,命令顺序如下
    [root @ **] cd /home
    [root @ **] cd soft
    这时用户所在的路径为 /home/soft。第一个cd命令为/home,前面有斜杠;而第二个cd命令后跟soft,前 面没有斜杠。这个soft目录是相对于/home目录来讲的,所以称为相对路径。

    windows下:
    绝对路径:由盘符开始, C:\windows\System32\cmd.exe
    相对路径: 从当前路径开始的路径,假如当前路径在C:\windows下,对于上一条的路径只需要输入 System32\cmd.exe即可进入C:\windows\System32\cmd.exe。

    1 char * basename(char *path) 作用是得到特定的路径中的最后一个’/’,后面的内容,如果是/usr/test.sh

    得到的内容就是 test.sh //#include <libgen.h>

    2 char *dirname(char *path) //功能截取path中的目录路径返回。

    3 char *realpath(const char *path, char *resolved_path) //realpath()用来将参数path所指的相对路径转换成绝对路径后存于参数resolved_path所指的字符串数组或指针中。返回值: 成功则返回指向resolved_path的指针,失败返回NULL,错误代码存于errno

    4 char *getcwd(char *buf,size_t size) getcwd()会将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数size为buf的空间大小。

    展开全文
  • vue获取路径中的参数的两种形式

    千次阅读 2020-08-01 21:45:17
    路径:http://localhost:3000/edit/123 取值123的方式:this.$route.params.id 路径:http://localhost:3000/?token=123 取值123的方式:this.$route.query.token
    1. 路径:http://localhost:3000/edit/123
      取值123的方式:this.$route.params.id

    2. 路径:http://localhost:3000/?token=123
      取值123的方式:this.$route.query.token

    展开全文
  • Java jar包中获取路径

    千次阅读 2019-03-04 17:44:42
    在jar包中获取路径,一般是用于读取资源文件 System.getProperty的方式获取到的是启动路径,比如cd 到 E:/er下执行 存放在 F:/aa目录下的jar包, 获取到的路径就是E:/er 使用new File("")的方式有同样的...
  • HttpServletRequest 的几种获取路径的方法
  • python获取路径中的文件名

    万次阅读 2019-10-30 15:52:35
    获取路径中的文件名 一、字符串分割–split()函数 path=“K:\Project\FilterDriver\DriverCodes\hello.txt” print(path.split(’\’)[-1]) 二。使用basename()函数 import os.path filePath=“K:/Project/...
  • PHP获取路径和目录方法

    千次阅读 2019-08-16 17:15:58
    PHP获取路径或目录实现: 常用: 1.获取当前文件目录绝对路径 -> "dirname(__FILE__)" : D:\myWAP\myWeb\learn\php_path 2.获取当前文件目录绝对路径 -> "getcwd()" : D:\myWAP\myWeb\learn\php_path 3.获取...
  • vue之页面跳转和获取路径参数值

    万次阅读 2018-07-19 21:07:23
    一、获取路径参数 vue获取路径参数值的方式与原生js开发的网站、小程序获取参数值有点不一样,但总归来说,实质都是一样的。 底层的原理实现都是由原生js而来,小程序和vue开发的网站,它们获取参数值的方式其实都...
  • Python获取路径下的文件名

    万次阅读 2019-06-04 16:10:57
    importos deffile_name(file_dir): forroot,dirs,filesinos.walk(file_dir): print(root)#当前目录路径 print(dirs)#当前路径下所有子目录 print(files)#当前路径下所有非目录子文件 ...
  • makefile 获取路径How to get the full path and directory of a Makefile itself like finding Bash script’s own path? 如何获得Makefile本身的完整路径和目录,例如查找Bash脚本自己的路径 ? This 2 lines in ...
  • shell脚本中获取路径两种方法

    千次阅读 2019-06-29 18:57:48
    shell脚本中获取路径两种方法 第一种 DIR=$(cd $(dirname $0) && pwd ) echo $DIR 第二种 DIR2=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd ) echo $DIR2 上面两种方法都可以获取到当前路径,...
  • java关于用request获取路径

    千次阅读 2018-03-30 15:31:31
    request获取路径,上图为六中路径。 1.request.getContextPath(),返回的是项目的根目录,项目放在Tomcat的ROOT下就为空,本地中如果没有配置Application context,也会返回空, 反之配置了就返回配置的值。如图:...
  • JS获取路径中的文件名

    千次阅读 2018-10-25 15:52:07
    路径: /7/2018/10/15/b3e7b4c5-bdaf-4d82-bee3-f82dfd10d83c.doc   使用split切割成数组,然后取最后一个即可: 切割成的数组为: var Business=$scope.detail.BusinessFileUrl.split("/"); ...
  • laravel获取路径的方法总汇

    千次阅读 2017-11-25 10:42:53
    laravel获取路径的方法总汇及问题先写个测试程序 echo "<pre>"; $vendorDir = dirname(dirname(__FILE__)); //D:\wamp64\www\mydir echo (dirname(__FILE__)),"\n"; //D:\wamp64\www\mydir
  • java 获取路径下所有文件

    千次阅读 2018-05-28 12:19:56
    思路:通过递归遍历文件夹 public static void getFiles(List&lt;File&gt;fileList, String path){ try { File file = new File(path); if(file.isDirectory()){ File []files = file.listFiles...
  • python 获取路径的几种方法

    千次阅读 2018-07-31 14:03:51
    获取当前执行的python文件路径,无论是在别的模块中的什么位置 使用sys.path[0] 都会返回同一个值,当前执行的Python文件路径。 2、os.getcwd() 获取Python的工作目录。默认就是命令行执行命令的路径,但是可以...
  • Java 获取路径的几种方法

    千次阅读 2017-11-14 14:13:54
    1、获取当前类所在的“项目名路径” String rootPath = System.getProperty("user.dir"); 2、获取编译文件“jar包路径”(反射) System.out.println(类名.class.getClassLoader().getResource("文件名/文件夹"));...
  • context获取路径 context.getFilesDir() 获取路径:/data/user/0/应用包名/files 包含应用程序文件的目录的路径。不需要额外的权限来读取或在返回的路径下写入文件。 context.getCacheDir() 获取路径:/...
  • js怎么获取路径后面带过来的参数?

    万次阅读 2017-12-03 22:24:29
    1.js怎么获取路径后面带过来的参数?博主这里提供三种方法,但是推荐第二种和第三种方法,新手可以先从第一种方法学习,后续再学第二种和第三种。路径:https://域名/xxx/xxx/xxx.html?参数id=12&amp;参数name=...
  • js获取路径中的参数值

    千次阅读 2018-03-01 15:29:57
    之前维护一个项目,需要另外增加页面,要求接收路径中的参数在 js中加入代码://获取url中的参数 function getUrlParam(name) { var reg = new RegExp("(^|&amp;)" + name + "=([^&amp;]*)...
  • File 类 获取路径 名字等信息 详解

    万次阅读 2018-09-06 13:42:41
    File 类 获取路径 名字等信息 详解 Table of Contents File 类 获取路径 名字等信息 详解  首先 , 看测试代码 , 分三种路径对api 获取情况分析 并总结 package test.file; import java.io.File; import java....
  • 微信小程序获取路径参数

    万次阅读 2018-05-16 20:10:21
    微信小程序的路径参数获取跟网站页面路径参数的获取方式有点不一样。网站页面路径参数的获取方式可参考文章:https://blog.csdn.net/Charles_Tian/article/details/78704908微信小程序的路径参数获取方式参考链接:...
  • JS——获取路径中的文件名

    千次阅读 2017-11-22 15:02:43
    var i = tmp_imgpath.lastIndexOf("\\"); console.log(i); console.log(tmp_imgpath.slice(i+1)); var tmp_imgname = tmp_imgpath.slice(i+1);
  • python-pyinstaller、打包后获取路径

    千次阅读 2019-07-23 10:13:43
    使用pyinstaller可以把.py文件打包为.exe可执行文件,命令为: pyinstaller hello.py 打包后有两个文件夹,一个是dist,另外一个是build,可执行文件在dist文件夹里面,但是会...获取文件路径的方式有四种,可以在...
  • el表达式获取路径

    千次阅读 2017-09-07 19:19:50
    param.returnUrl
  • 考虑到oss得外网流量费有点贵,所以决定搭建一个专门做文件存储的微服务模块,但是在里面遇到一个小问题,就是使用getServletContext().getRealPath()得到的始终是临时文件路径,而且每次重启服务,路径还会变,这...
  • QFileInfo获取路径

    千次阅读 2017-05-10 16:20:11
    //路径和文件名相关: QString path(); 返回文件路径,不包含文件名。 QString filePath(); 返回文件路径,包含文件名。 QString fileName(); 返回文件名称。 // 例子如下 QFileInfo fileInfo("/home/dipper/...
  • idea 下获取路径下文件的方法

    千次阅读 2019-04-20 11:07:00
    想读取resouce/temp下的test.txt文件。方式一:File sourceFile = ResourceUtils.getFile("classpath:temp/test.txt"); //这种方法在linux下无法工作 方式二:Resource resource = new ClassPathResource("temp...
  • Java WEB项目中获取路径方法

    千次阅读 2017-05-29 17:05:22
    java中获取路径在java中获取当前项目的路径信息 public static void main(String[] args) throws URISyntaxException { //1、来获得当前线程的ClassLoader相应的资源路径 String url = Thread.currentThread()....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,551,923
精华内容 620,769
关键字:

获取路径