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

读取jar包同级目录的文件

    博客分类:
  • j2se
阅读更多

从网上找了一段代码,修改之后就可以用了

/**----------------------------------------------------------------------- 
  *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定义结束

 

 

 

根据情况调用

private String filepath = PropertiesFile.getAppPath(Trays.class).substring(1, PropertiesFile.getAppPath(Trays.class).length())+ "/nmr.dat";

分享到:
评论

相关推荐

    读取war包或jar包内的文件

    1. **Java ClassLoader**: 读取JAR或WAR包内的文件通常需要借助Java的ClassLoader。ClassLoader是Java中负责加载类的组件,它知道如何从不同的源(如文件系统、网络或ZIP文件)加载类和资源。 2. **getResource() ...

    读取与类同等级下的jar包

    用于读取类.class文件与同类包下的jar文件 工具类

    SpringBoot上传文件到本服务器 目录与jar包同级问题

    解决 SpringBoot 上传文件到本服务器目录与 jar 包同级问题需要我们使用 ClassPathResource 来读取资源文件,并将文件存放在与 jar 包同级的目录下。同时,我们需要在 application.yml 配置中指定静态资源的目录,...

    java项目打包成可执行jar用log4j将日志写在jar所在目录操作

    这样,当jar包运行时,Spring Boot会按照一定的优先级顺序从多个路径来加载application.properties配置文件,这些路径包括jar包同级目录下的/config目录、classpath里的/config目录以及classpath同级目录等。...

    获取你想要的城市边界geojson文件(可执行jar包)

    执行jar包(jdk1.8环境),输入你想要的城市名(输入一个或者多个城市名,多个请用逗号隔开),自动生成城市边界geojson文件(存放在同级目录下)

    dom4j和xpath必备jar包

    在实际应用中,"dom4j和xpath必备jar包"通常包含了DOM4J库和XPath相关的类库,如Java的JAXP(Java API for XML Processing)的一部分,这些库文件是Java项目中解析和操作XML所必需的依赖。将这些jar包添加到项目的类...

    详解在Docker容器中运行Spring Boot应用

    另一方面,Spring Boot还具备将代码直接构建为可执行jar包的能力,这个jar包是一个可以独立运行的部署单元。基于以上特性,现在普遍认为Spring Boot提供了一种快速构造微服务(Micro-Service)的能力。 Docker与Spring...

    maven+springboot打成jar包的方法

    1. mvn clean package -DskipTests:在项目目录下运行此命令,在target目录下生成JAR包或WAR包。 2. mvn clean:清理项目生产的临时文件, 一般是模块下的target目录。 3. mvn compile -DskipTests:模块安装命令,...

    centos-java-gdal.zip

    2. **下载GDAL源码**:从GDAL官方网站获取最新的GDAL源代码包,解压到合适的工作目录。 3. **配置GDAL**:使用`./configure`命令来配置GDAL的编译选项,确保启用JNI支持。可能需要添加`--with-java`和`--with-jvm-...

    解决idea打包成功但是resource下的文件没有成功的问题

    当使用Idea进行打包操作,例如创建JAR或WAR文件,发现虽然打包过程顺利完成,但resource目录下的文件并未被正确地包含在打包结果中。这种情况可能是由于Idea的构建设置不正确或Maven(如果项目使用Maven进行构建)的...

    XJad(Java反编译工具)v2.2

    反编译完成后,生成的.java源代码文件将保存在与.jar包同级的目录下,方便用户查找和阅读。 若需要对整个文件夹进行反编译,同样是在“文件”菜单下选择“文件夹反编译”。在指定包含.class文件的文件夹后,XJad会...

    Springboot引用外部配置文件的方法步骤

    2. 直接把配置文件放到jar包的同级目录。 3. 在classpath下建一个config文件夹,然后把配置文件放进去。 4. 在classpath下直接放配置文件。 这四种方式的优先级从高到低依次递减。我们可以根据自己的需求选择合适的...

    java搜索系统solr部署tomcat实战

    - 修改Tomcat中Solr的`web.xml`文件,指定Solr的`solr.home`目录,通常设置为与Solr压缩包同级的目录。 - 例如,可以设置为`C:\Users\asus\Documents\jason\solr-8.0.0\`。 5. **添加依赖库** - 复制日志工具...

    word源码java-system-poi:利用poi简单excel的导入和word的导出

    jdk支持,然后下载jar包,进入同级目录,打开cmd,执行 java -jar jar包名称 回车即可,下载源码放入Idea里面,启动Main方法即可,另外测试的excel文件和本人自己再项目打成的jar包在下面链接 Excel源文件图片 Word...

    core java入门知识点汇总

    为了方便执行JAR包,可以在其同级目录下创建一个批处理文件,如`.sh`,并设置执行权限,以便双击运行。 #### 四、注释与文档 注释是提高代码可读性和可维护性的关键。Java支持三种类型的注释:单行注释(`//`),...

    俄罗斯方块源码

    在本例中,配置文件以.jar相同的名字加上.cfg的后缀保存在jar包的同级目录下,便于查找和读取。 此外,游戏的界面设计和事件处理也是开发的关键。Java提供了Swing和JavaFX等库来构建图形用户界面(GUI),开发者...

    好用的代码生成源码

    5.模板自动include同级目录:macro.include文件 示例: 如你的模板为 java_src/com/project/UserDao.java, 将自动include: java_src/com/project/macro.include 及 根目录的macro.include 6.generator.xml (或者...

    xmljava系统源码-springboot_hbase_kafka:springboot_hbase_kafka

    项目根目录(和pom.xml同级) mvn clean package -Dmaven.test.skip=true 1)、启动: java -jar muheda-notice-1.0-SNAPSHOT.jar --spring.profiles.active=test *: --spring.profiles.active=test为指定加载配置文件...

    jaxen-1.1-beta-6

    "org"目录则可能包含了Jaxen库的源代码或编译后的类文件,按照包名的层次结构组织,便于类的查找和加载。 总结来说,"jaxen-1.1-beta-6"是一个XML处理库,它实现了XPath标准,并提供了与多种XML解析器的接口。通过...

Global site tag (gtag.js) - Google Analytics