精华内容
下载资源
问答
  • DWORD GetProcessId(IN PCHAR szExeName){DWORD dwRet = 0;DWORD dwCount = 0;HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hSnapshot != INVALID_HANDLE_VALUE){PROCESSENTRY32 pe = {...

    DWORD GetProcessId(IN PCHAR szExeName)

    {

    DWORD dwRet = 0;

    DWORD dwCount = 0;

    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if (hSnapshot != INVALID_HANDLE_VALUE)

    {

    PROCESSENTRY32 pe = {0};

    pe.dwSize = sizeof(PROCESSENTRY32);

    BOOL bRet = Process32First(hSnapshot, &pe);

    while (bRet)

    {

    if (!_stricmp(pe.szExeFile, szExeName))

    {

    dwCount++;

    dwRet = pe.th32ProcessID;

    }

    bRet = Process32Next(hSnapshot, &pe);

    }

    if (dwCount > 1)

    dwRet = 0xFFFFFFFF;

    CloseHandle(hSnapshot);

    }

    return dwRet;

    }

    DWORD ID = GetProcessId("notepad.exe");

    GetModuleFileNameEx(ID, NULL, path, sizeof(path));

    展开全文
  • Java获取Jar或者War文件运行的绝对路径,getRunningPath需要一个当前程序使用的Java类的class属性参数,它可以返回打包过的 Java可执行文件(jar,war)所处的系统目录名或非打包Java程序所处的目录

          利用java.lang.Class的getClassLoader方法,可以获得给定类的ClassLoader实例,ClassLoader loader=cls.getClassLoader();

    它的getResource方法可以获得当前类装载器中的资源的位置,loader.getResource(path+clsName);

    我们可以利用类文件的名称作为要查找的资源,经过处理后就可获得当前Java程序的运行位置信息,其代码设计思想如下:  

       1. 获得Class参数的所在的类名  Class cls .getName  : clsName
       2.  取得该类所在的包名   Package pack=cls.getPackage();
       3. 将包名转换为路径 path 
       4.利用getResource得到当前的类文件所在URL  loader.getResource(path+clsName);

       5.利用URL解析出当前Java程序所在的路径 

     /**-----------------------------------------------------------------------
         *getRunningPath需要一个当前程序使用的Java类的class属性参数,它可以返回打包过的
         *Java可执行文件(jar,war)所处的系统目录名或非打包Java程序所处的目录
         *@param cls为Class类型
         *@return 返回值为该类所在的Java程序运行的目录
         -------------------------------------------------------------------------*/
        public static String getAppPath(Class cls){
            //检查用户传入的参数是否为空 cls:class com.util.PropertiesUtil
            if(cls==null) {
            	 throw new java.lang.IllegalArgumentException("参数不能为空!");
            }
            
            ClassLoader loader=cls.getClassLoader();
            //获得类的全名,包括包名 //com.util.PropertiesUtil.class
            String clsName=cls.getName()+".class";
            //获得传入参数所在的包 package com.util
            Package pack=cls.getPackage();
            String path="";//包名相对应路径
            //如果不是匿名包,将包名转化为路径
            if(pack!=null){
                String packName=pack.getName();//com.util
                //此处简单判定是否是Java基础类库,防止用户传入JDK内置的类库
                if(packName.startsWith("java.")||packName.startsWith("javax.")){
            	   throw new java.lang.IllegalArgumentException("请不要传送系统内置类!");
                }
                
                //在类的名称中,去掉包名的部分,获得类的文件名 PropertiesUtil.class
                clsName=clsName.substring(packName.length()+1);
                //判定包名是否是简单包名,如果是,则直接将包名转换为路径
                if(packName.indexOf(".")<0){
                	path=packName+"/";
                }
                else{//否则按照包名的组成部分,将包名转换为路径
                    int start=0,end=0;
                    end=packName.indexOf(".");
                    while(end!=-1){
                        path=path+packName.substring(start,end)+"/";
                        start=end+1;
                        end=packName.indexOf(".",start);
                    }
                    path=path+packName.substring(start)+"/"; //com/util/
                }
            }
            //调用ClassLoader的getResource方法,传入包含路径信息的类文件名
            //file:/D:/Workspaces/springjdbc/bin/com/util/PropertiesUtil.class
            java.net.URL url =loader.getResource(path+clsName);
            //从URL对象中获取路径信息
            //   /D:/Workspaces/springjdbc/bin/com/util/PropertiesUtil.class
            String realPath=url.getPath();
            //去掉路径信息中的协议名"file:"
            int pos=realPath.indexOf("file:");
            if(pos>-1){
            	realPath=realPath.substring(pos+5);
            }
            //去掉路径信息最后包含类文件信息的部分,得到类所在的路径
            pos=realPath.indexOf(path+clsName);
            realPath=realPath.substring(0,pos-1);//  /D:/Workspaces/springjdbc/bin
            //如果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名
            if(realPath.endsWith("!")){
            	realPath=realPath.substring(0,realPath.lastIndexOf("/"));
            }
                
          /*------------------------------------------------------------
           ClassLoader的getResource方法使用了utf-8对路径信息进行了编码,当路径
                        中存在中文和空格时,他会对这些字符进行转换,这样,得到的往往不是我们想要
                         的真实路径,在此,调用了URLDecoder的decode方法进行解码,以便得到原始的
                         中文及空格路径
          -------------------------------------------------------------*/
           try{
              realPath=java.net.URLDecoder.decode(realPath,"utf-8");
           }catch(Exception e){
        	   throw new RuntimeException(e);
           }
           
           return realPath;
        }


    展开全文
  • 获取Java程序运行的路径

    千次阅读 2019-07-04 09:59:06
    System.getProperty("java.class.path")//这个方法可以获取当前运行程序完整路径,绝对的路径,并且适应操作系统,无需处理,更加high是,,哪怕你把jar文件弄成了exe文件,都可以获取,但是得到是本jar包位置和引用...

     

    网上很多人介绍了各种获取的方法,但是获取都不大好,一大番处理.我引荐了一个非常好的例子

    System.getProperty("java.class.path")//这个方法可以获取当前运行程序的完整路径,绝对的路径,并且适应操作系统,无需处理,更加high的是,,哪怕你把jar文件弄成了exe文件,都可以获取,但是得到的是本jar包位置和引用的jar包位置格式类似这种,我这使用split(';')这样分割后的

    System.getProperty("usr.dir")//获取当前运行程序的完整目录,配合上面那个使用,相信问题都没了.   仅限linux

     

    ------------以下是摘自别人的----------------

    对于Java程序,无论是未打包的还是打包的JAR或WAR文件,有时候都需要获取它运行所在目录信息,如何做到这一点呢? 

    在Java处理的文件系统中,目录的表示方式有两种: 

    (1)绝对目录,它以"/"为起始字符,代表从根目录下开始寻找给出的目录,如/c:/java 

    (2)相对路径,它以不带“/”的目录名表示,表示以当前Java程序正在运行的目录作为起始目录来寻找给出的目录。如java/classes。在相对路径中,有一些特定的字符,可以代表特的的目录,比如,“.”代表当前目录,“..”代表当前目录的上一级目录。在网上很多给出的例子中,就是利用"."作为目录名,构造File对象的实例,然后通过File对象的方法来获取当前程序运行的目录。 

        这种方法虽然简单,但有时不能正确的得出当前程序的运行目录。原因在于,运行Java程序不一定要进入到该程序的类文件或JAR文件所在的目录,只要在运行时指定了正确的类路径信息,就可以在任何目录中运行Java程序,此时利用这种方法只能得到发出运行命令时所在的目录信息。 

         从上面的分析可以看出,对于很多Java程序,尤其是WEB程序,利用当前路径的“.”表示法,都不能满足要求。那么怎样才能正确的得到运行目录信息呢? 

         在Web程序中,利用Servlet API可以获得一些路径信息,比如HttpServletRequest接口中定义的getRealPath方法,但类似这些方法都依赖于Servlet环境,不便于程序的单元测试。 

        本文提供了一种只使用Java标准API的路径探测方法,就是利用ClassLoader抽象类。 

        利用java.lang.Class的getClassLoader方法,可以获得给定类的ClassLoader实例,它的getResource方法可以获得当前类装载器中的资源的位置,我们可以利用类文件的名称作为要查找的资源,经过处理后就可获得当前Java程序的运行位置信息,其伪代码如下: 
        
        获得Class参数的所在的类名 
        取得该类所在的包名 
        将包名转换为路径 
        利用getResource得到当前的类文件所在URL 
        利用URL解析出当前Java程序所在的路径 
      
       具体代码如下:

     /**-----------------------------------------------------------------------
         *getAppPath需要一个当前程序使用的Java类的class属性参数,它可以返回打包过的
         *Java可执行文件(jar,war)所处的系统目录名或非打包Java程序所处的目录
         *@param cls为Class类型
         *@return 返回值为该类所在的Java程序运行的目录
         -------------------------------------------------------------------------*/
        public static String getAppPath(Class cls){
            //检查用户传入的参数是否为空
            if(cls==null) 
             throw new java.lang.IllegalArgumentException("参数不能为空!");
            ClassLoader loader=cls.getClassLoader();
            //获得类的全名,包括包名
            String clsName=cls.getName()+".class";
            //获得传入参数所在的包
            Package pack=cls.getPackage();
            String path="";
            //如果不是匿名包,将包名转化为路径
            if(pack!=null){
                String packName=pack.getName();
               //此处简单判定是否是Java基础类库,防止用户传入JDK内置的类库
               if(packName.startsWith("java.")||packName.startsWith("javax.")) 
                  throw new java.lang.IllegalArgumentException("不要传送系统类!");
                //在类的名称中,去掉包名的部分,获得类的文件名
                clsName=clsName.substring(packName.length()+1);
                //判定包名是否是简单包名,如果是,则直接将包名转换为路径,
                if(packName.indexOf(".")<0) path=packName+"/";
                else{//否则按照包名的组成部分,将包名转换为路径
                    int start=0,end=0;
                    end=packName.indexOf(".");
                    while(end!=-1){
                        path=path+packName.substring(start,end)+"/";
                        start=end+1;
                        end=packName.indexOf(".",start);
                    }
                    path=path+packName.substring(start)+"/";
                }
            }
            //调用ClassLoader的getResource方法,传入包含路径信息的类文件名
            java.net.URL url =loader.getResource(path+clsName);
            //从URL对象中获取路径信息
            String realPath=url.getPath();
            //去掉路径信息中的协议名"file:"
            int pos=realPath.indexOf("file:");
            if(pos>-1) realPath=realPath.substring(pos+5);
            //去掉路径信息最后包含类文件信息的部分,得到类所在的路径
            pos=realPath.indexOf(path+clsName);
            realPath=realPath.substring(0,pos-1);
            //如果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名
            if(realPath.endsWith("!"))
                realPath=realPath.substring(0,realPath.lastIndexOf("/"));
          /*------------------------------------------------------------
           ClassLoader的getResource方法使用了utf-8对路径信息进行了编码,当路径
            中存在中文和空格时,他会对这些字符进行转换,这样,得到的往往不是我们想要
            的真实路径,在此,调用了URLDecoder的decode方法进行解码,以便得到原始的
            中文及空格路径
          -------------------------------------------------------------*/
          try{
            realPath=java.net.URLDecoder.decode(realPath,"utf-8");
           }catch(Exception e){throw new RuntimeException(e);}
           return realPath;
        }//getAppPath定义结束

     

    1. 不要传递系统的类,作为getAppPath的参数,如java.lang.String.class,当然,也不要传递那些已经位于JDK中的那些类,比如xml相关的一些类等等。
    2. 要传递应该是程序中主要的运行类,不要传递程序中的支持类库中的类文件,也就是那些第三方的类库中的类文件,否则得到的将是那些类库的位置。

     

     

    原文

    https://blog.csdn.net/u012142247/article/details/79737204

    展开全文
  • web 上运行1:this.getClass().getClassLoader().getResource("/").getPath();this.getClass().getClassLoader().get... 得到的是 ClassPath的绝对URI路径。如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.w...

    web 上运行

    1:

    this.getClass().getClassLoader().getResource("/").getPath();

    this.getClass().getClassLoader().getResource("").getPath();  得到的是 ClassPath的绝对URI路径。

    如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/

    System.getProperty("user.dir");

    this.getClass().getClassLoader().getResource(".").getPath();    得到的是 项目的绝对路径。

    如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war

    2:

    this.getClass().getResource("/").getPath();

    this.getClass().getResource("").getPath(); 得到的是当前类 文件的URI目录。不包括自己!

    如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/com/jebel/helper/

    this.getClass().getResource(".").getPath();   X 不 能运行

    3:

    Thread.currentThread().getContextClassLoader().getResource("/").getPath()

    Thread.currentThread().getContextClassLoader().getResource("").getPath()  得到的是 ClassPath的绝对URI路径。

    如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/

    Thread.currentThread().getContextClassLoader().getResource(".").getPath()  得到的是 项目的绝对路径。

    如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war

    在本地运行中

    1:

    this.getClass().getClassLoader().getResource("").getPath();

    this.getClass().getClassLoader().getResource(".").getPath();   得到的是 ClassPath的绝对URI路径。

    如:/D:/myProjects/hp/WebRoot/WEB-INF/classes

    this.getClass().getClassLoader().getResource(".").getPath();  X 不 能运行

    2:

    this.getClass().getResource("").getPath();

    this.getClass().getResource(".").getPath(); 得到的是当前类 文件的URI目录。不包括自己!

    如:/D:/myProjects/hp/WebRoot/WEB-INF/classes/com/jebel/helper/

    /D:/myProjects/hp/WebRoot/WEB-INF/classes/    得到的是 ClassPath的绝对URI路径。

    如:/D:/myProjects/hp/WebRoot/WEB-INF/classes

    3:

    Thread.currentThread().getContextClassLoader().getResource(".").getPath()

    Thread.currentThread().getContextClassLoader().getResource("").getPath() 得到的是 ClassPath的绝对URI路径。。

    如:/D:/myProjects/hp/WebRoot/WEB-INF/classes

    Thread.currentThread().getContextClassLoader().getResource("/").getPath()    X 不 能运行

    最后

    在Web应用程序中,我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。

    还有request.getContextPath();  在Weblogic中要用request.getServletContext().getContextPath();但如果打包成war部署到Weblogic服务器,项目内部并没有文件结构的概念,用这种方式是始终得到null,获取不到路径,目前还没有找到具体的解决方案。

    展开全文
  • 关于绝对路径和相对路径: 绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。相 ...
  • 这里就不演示了其他方法获取正在运行的应用程序的堆转储,重点放在了使用编程来获取转储文件的方法,并演示了如何使用jhat工具浏览/分析生成的二进制堆转储。你可能想在各个时间点从应用程序中转储多个堆快照,然后...
  • 展开全部类名.class.get...java.lang.Class.getResource()查找62616964757a686964616fe4b893e5b19e31333337626162给定名字资源importjava.net.URL;importjava.lang.*;publicclassClassDemo{publicstaticvoidma...
  • 1. 前言Java 开发中我们经常要获取文件的路径,比如读取配置...在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变就可以被读取到。一旦改变相对位置就无法被读取到...
  • java web中File相对路径与绝对路径总结,用于在运行获取配置文件、动态加载对象等
  • java中获得文件的路径在我们做上传文件操作时是不可避免的。web 上运行1:this.getClass().getClassLoader().getResource("/").getPath();...得到的是 ClassPath的绝对URI路径。如:/D:/jboss-4.2.2....
  • Java 获取当前项目路径

    千次阅读 2018-06-26 14:19:47
    转载自 ...很多时候我们都需要在项目中获得项目当前运行所在的绝对路径,但web项目与普通Java项目获取类路径的方式有点不一样,因为web项目获取的是运行容器所在的路径...
  • Java中获得文件的路径在我们做上传文件操作时是不可避免的。web 上运行1:this.getClass().getClassLoader().getResource("/").getPath();... 得到的是 ClassPath的绝对URI路径。如:/D:/jboss-4.2....
  • java中获得文件的路径在我们做上传文件操作时是不可避免的。web 上运行1:this.getClass().getClassLoader().getResource("/").getPath();...得到的是 ClassPath的绝对URI路径。如:/D:/jboss-4.2.2...
  • IO流是java在执行过程中整体执行核心元素,如何掌握IO流操作,需要通过深度掌握输入输出技术,加强在java的执行层面提升运行速度,加强java的运行效率,深度掌握java开发输出技巧,拉勾IT课小编分析这一技术。...
  • 1。在java应用中可以使用以下的方法获取当前路径 System.getProperty("user.dir"...可以返回当前工程根目录的绝对路径 2。在文件操作中,不用/或者\最好,推荐使用File.separator ...
  • 1. 前言Java 开发中我们经常要获取文件的路径,比如读取配置...在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变就可以被读取到。一旦改变相对位置就无法被读取到...
  • Java中使用路径,分为两种:绝对路径和相对路径。归根结底,Java本质上只能使用绝对路径来寻找资源。所有相对路径寻找资源方法,都不过是一些便利方法。不过是API在底层帮助我们构建了绝对路径,从而找到资源...
  • 1. 前言Java 开发中我们经常要获取文件的路径,比如读取配置...在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变就可以被读取到。一旦改变相对位置就无法被读取到...
  • 1. 前言Java 开发中我们经常要获取文件的路径,比如读取配置...在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变就可以被读取到。一旦改变相对位置就无法被读取到...
  • 原标题:Java 中几种获取文件路径的方式1. 前言Java开发中我们经常要获取文件的路径,比如读取配置...在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变就可以被...
  • 描述1. 前言Java开发中我们经常要获取文件的路径,比如读取配置...在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变就可以被读取到。一旦改变相对位置就无法被读...
  • java中获得文件的路径在我们做上传文件操作时是不可避免的。web 上运行1:this.getClass().getClassLoader().getResource("/").getPath();...得到的是 ClassPath的绝对URI路径。如:/D:/jboss-4.2....
  • 1. 前言Java 开发中我们经常要获取文件的路径,比如读取配置...在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变就可以被读取到。一旦改变相对位置就无法被读取到...
  • java中获得文件的路径在我们做上传文件操作时是不可避免的。web 上运行1:this.getClass().getClassLoader().getResource("/").getPath();... 得到的是 ClassPath的绝对URI路径。如:/D:/jboss-4.2....

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 172
精华内容 68
关键字:

java获取运行的绝对路径

java 订阅