java获取路径问题

Java获取Java文件路径的几种方法 本文介绍了三种常用的方法来获取Java文件路径:使用相对路径、使用类加载器和使用绝对路径。根据实际需求选择适合的方法,可以轻松地获取Java文件的路径。无论是读取文件、写入文件还是对文件进行其他操作,获取文件路径是开发中不可或缺的一部分。在Java开发中,获取Java文件的路径是一项常见的任务。本文将介绍几种获取Java文件路径的方法,并提供相应的代码示例和详细描述。通过使用类加载器,我们可以获取Java文件的路径。以上是关于获取Java文件路径的几种方法的详细介绍和代码示例。方法获取文件的绝对路径。 阅读详情

原文地址:http://blog.youkuaiyun.com/z69183787/article/details/22774537

java获取路径问题

Java中使用的路径,分为两种:绝对路径和相对路径。具体而言,又分为四种:
  一、URI形式的绝对资源路径

  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b

  URL是URI的特例。URL的前缀/协议,必须是Java熟悉的。URL可以打开资源,而URI则不行。
  URL和URI对象可以互相转换,使用各自的toURI(),toURL()方法即可!

  二、本地系统的绝对路径

  D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b

  Java.io包中的类,需要使用这种形式的参数。
  但是,它们一般也提供了URI类型的参数,而URI类型的参数,接受的是URI样式的String。因此,通过URI转换,还是可以把URI样式的绝对路径用在java.io包中的类中。

  三、相对于classpath的相对路径
  如:相对于
  file:/D:/java/eclipse32/workspace/jbpmtest3/bin/这个路径的相对路径。其中,bin是本项目的classpath。所有的Java源文件编译后的.class文件复制到这个目录中。

  四、相对于当前用户目录的相对路径
  就是相对于System.getProperty(“user.dir”)返回的路径。
  对于一般项目,这是项目的根路径。对于JavaEE服务器,这可能是服务器的某个路径。这个并没有统一的规范!
  所以,绝对不要使用”相对于当前用户目录的相对路径”。然而:
  默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录。
  这就是说,在使用java.io包中的类时,最好不要使用相对路径。否则,虽然在J2SE应用程序中可能还算正常,但是到了J2EE程序中,一定会出问题!而且这个路径,在不同的服务器中都是不同的!

  相对路径最佳实践
  推荐使用相对于当前classpath的相对路径
  因此,我们在使用相对路径时,应当使用相对于当前classpath的相对路径。

  ClassLoader类的getResource(String name),getResourceAsStream(String name)等方法,使用相对于当前项目的classpath的相对路径来查找资源。

  读取属性文件常用到的ResourceBundle类的getBundle(String path)也是如此。

  通过查看ClassLoader类及其相关类的源代码,我发现,它实际上还是使用了URI形式的绝对路径。通过得到当前classpath的 URI形式的绝对路径,构建了相对路径的URI形式的绝对路径。(这个实际上是猜想,因为JDK内部调用了SUN的源代码,而这些代码不属于JDK,不是开源的。) 相对路径本质上还是绝对路径

  因此,归根结底,Java本质上只能使用绝对路径来寻找资源。所有的相对路径寻找资源的方法,都不过是一些便利方法。不过是API在底层帮助我们构建了绝对路径,从而找到资源的!
  得到classpath和当前类的绝对路径的一些方法

  下面是一些得到classpath和当前类的绝对路径的一些方法。你可能需要使用其中的一些方法来得到你需要的资源的绝对路径。

  1.FileTest.class.getResource(“”)
  得到的是当前类FileTest.class文件的URI目录。不包括自己!

  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/

  2.FileTest.class.getResource(“/”)
  得到的是当前的classpath的绝对URI路径。

  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

  3.Thread.currentThread().getContextClassLoader().getResource(“”)
  得到的也是当前ClassPath的绝对URI路径。

  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

  4.FileTest.class.getClassLoader().getResource(“”)
  得到的也是当前ClassPath的绝对URI路径。

  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

  5.ClassLoader.getSystemResource(“”)
  得到的也是当前ClassPath的绝对URI路径。

  如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

  我推荐使用Thread.currentThread().getContextClassLoader().getResource(“”)来得到当前的classpath的绝对路径的URI表示法。

  Web应用程序中资源的寻址
  上文中说过,当前用户目录,即相对于System.getProperty(“user.dir”)返回的路径。
  对于JavaEE服务器,这可能是服务器的某个路径,这个并没有统一的规范!
  而不是我们发布的Web应用程序的根目录!
  这样,在Web应用程序中,我们绝对不能使用相对于当前用户目录的相对路径。
  在Web应用程序中,我们一般通过ServletContext.getRealPath(“/”)方法得到Web应用程序的根目录的绝对路径。
  这样,我们只需要提供相对于Web应用程序根目录的路径,就可以构建出定位资源的绝对路径。
  这是我们开发Web应用程序时一般所采取的策略。

推荐使用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”);

JAVA获取各种路径总结 JSP中获得当前应用的相对路径和绝对路径   根目录所对应的绝对路径、  文件的绝对路径  、  当前web应用的绝对路径、  取得请求文件的上层目录…… 立即下载

相关推荐

java 获取路径的各种方法(总结)

下面小编就为大家带来一篇java 获取路径的各种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Java获取文件路径的五种方法

学习用

fortyman的博客 3万+

基于Arduino 的 FM 调频收音机

这是一个基于 Arduino 的开源的收音机项目,它具备一台标准收音机的全部功能,从控制部分到外壳都可以自己 DIY。在项目中,我们将介绍让 FM 收音机调谐器的 RDA5807 模块与 I2C 协议进行通信的方法,整个过程只需要两根线就可以与 IC 通信,接线非常简单。3D 打印的外壳也非常简洁。总之,是个非常简单和实用的项目,来试试吧!

ByteBox的博客 1643

java基础学习: Java 中获取文件路径的几种方式

【代码】java基础学习: Java 中获取文件路径的几种方式。

玉汝于成 5108

手把手教你用HiNet实现图像隐藏:可逆神经网络实战指南(附代码)

本文提供了一份基于HiNet框架实现图像隐藏的实战指南。通过详细解析可逆神经网络原理,手把手指导环境搭建、模型构建、损失函数设计及训练流程,并附有完整代码。该方法利用单个可逆网络统一隐藏与恢复过程,结合小波变换提升隐蔽性,为信息隐藏应用提供了高效解决方案。

rgv234567的博客 433

从零到英雄:WSL2与Ubuntu22.04的终极性能调优指南

本文详细介绍了如何在Windows系统中通过WSL2与Ubuntu22.04进行性能调优,涵盖内核定制、GPU加速、网络优化等关键技巧,帮助开发者打造媲美原生Linux的高性能开发环境,特别适合AI训练和大数据处理等资源密集型任务。

weixin_29218509的博客 523

【Java获取路径的6种方式】

【代码】【Java获取路径的6种方式】

西洼工作室的博客 3160

Monocle2拟时轨迹基因模块的GO富集解析

本文详细解析了如何对Monocle2拟时分析中得到的基因表达模块进行GO富集分析。通过从热图对象中提取聚类模块,并利用clusterProfiler等工具进行功能注释,将抽象的基因表达时序模式转化为可解释的生物学功能主题,如免疫应答、细胞外基质组织等,从而深入理解细胞命运转变的驱动机制。

gpt4scribbler的博客 500

Java获取当前路径的几种方法

学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:434987175 我们一起学Java! 1、利用System.g...

chuifuhuo6864的博客 1177

一文搞懂数据标注

数据标注即通过分类、画框、标注、注释等,对图片、语音、文本等数据进行处理,标记对象的特征,以作为机器学习基础素材的过程。简言之,就是需要给数据做好标注,这样机器就能知道学习哪些内容。

女王の专属领地 9945

图像紫边消除(depurple)

对图像紫边形成原因、消除方法进行了介绍。

沧海一升的博客 7566

JAVA获取路径问题

下午在公司纳凉,何同学突然问我,他的hadoop 有个java类如何获取在根目录的文本文件。 目录是这个样子的。 JavaPath 类 要读取文件夹testfolder的test.txt 文本。 写成绝对路径问题就解决了,也就是写成D://workspace/JavaPath/testfolder/test.txt 可是这个这个程序要打成jar包,放到服务器上执行,这时绝对路径就不灵

data_12580的专栏 941

ESP8266开发之旅 基础篇① 走进ESP8266的世界

    欢迎大家来到ESP8266的世界,从现在开始,笔者将带领大家慢慢揭开ESP8266神秘的面纱。 1. 简介     从笔者的角度来说,ESP8266这个词可以理解为ESP8266EX芯片(当然,后面也有可能出现了其他芯片,这里首推ESP8266EX)以及依赖ESP8266EX芯片开发的系列模组的简称。     ESP8266EX是由乐鑫信息科技公司(Espressif)出品的一款应用于物联...

单片机菜鸟哥的博客 15万+

JAVA 获取路径问题

1.项目根路径获取 (1)new File("").getAbsolutePath() 输出:=getAbsolutePath====D:\project\SVN\2-系统开发实施\(3)编码\personnel-positioning-data-collector (2) System.getProperty("user.dir") 输出:====user.dir===D:\project\SVN\2-系统开发实施\(3)编码\personnel-positioning-data-colle.

傲视苍穹 630

AutoJs调用DeepSeek大模型接口实战教程 AutoJs接入DeepSeek、 DeepSeek API调用 、 手机脚本接入大模型

通过这篇文章,我们用 AutoJs 成功接入了 DeepSeek Chat API。使用发送请求在 Header 里正确携带 API Key从里拿到最终返回结果这样一来,你就可以在 AutoJs 里实现一个智能助手脚本,甚至做更复杂的 AI 自动化工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 472

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java获取classpath路径的问题

String path =类名.class.getResource("文件名.后缀").getPath(); path = path.substring(1,path.length()); 得到的结果: D:/Program%20Files/eclipseSDK/eclipse/workspace/TestDll/bin/cn/iem/hl/文件.后缀 ----------------

B_H_L的专栏 4606

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

关于java获取路径的问题

关于java获取路径的问题

hzb666666666的博客 2016

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java 获取发布后的路径问题_Java中的路径问题实例分析

Java中的路径问题实例分析前言:关于Java中得路径问题,网上有很多获取的答案,我这篇文章的目的在于说明获取路径时一些不常见的概念。在实际应用中使用的比较多的就是,当前路径和配置文件的路径(其他文件的路径)。为了搞清楚路径的问题我们不得不高清吃另一个问题, 那就是上下文Context, 我们可能听过很多关于上下文的问题, 比如说sevletContext,applicationContext,h...

weixin_42117340的博客 168

java 获取发布后的路径问题_Java获取文件的路径及常见问题解决方案

这篇文章主要介绍了Java获取文件的路径及常见问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下在java中读取读取文件,经常因为路径的问题找不到,此文用于记录如何定位文件的简单方法。本基于springboot做的测试,主要是构建工程方便,所用的方法都是JDK中的方法,主要测试有”/“和没有""的问题,以及getResourceAsStr...

weixin_36156209的博客 220

java 查看word文档_用java获取路径打开word文档问题

我想用java代码实现打开一个word文档,可是当我把路径写死的的时候可以打开,当我用代码获取路径时,能打开文档,可是却提示打开错误,当我把获取到的路径复制下来直接粘贴到代码中写...我想用java代码实现打开一个word文档,可是当我把路径写死的的时候可以打开,当我用代码获取路径时,能打开文档,可是却提示打开错误,当我把获取到的路径复制下来直接粘贴到代码中写死了,它又可以打开,无语啊,求高手解决...

weixin_42557768的博客 370

java获取项目路径时,里面有空格问题

java获取路径时,里面有空格问题: TestReadJson ts =  new TestReadJson(); //        获得当前项目路径 String pathPro = ts.getClass().getResource(".").getFile().toString(); String path = pathPro+"isa_addr.json";   //  获取文件

qq_25684795的博客 1650

Java获取文件路径及路径乱码问题

System.getProperty(“user.dir”) 构造:File(path) 构造:FileInputStream(“path”) XXX.class.getResource("").getPath() XXX.class.getClassLoader().getResource("").getPath() (以下演示均为Windows系统) 相对路径:src/test/resources/test.txt 绝对路径:D:\glearning\my_opensource\somproject\s

KING丨殇痕 1349

java jar方式部署的项目 获取上传路径为空问题

java jar方式部署的项目 获取上传路径为空问题

寂夜了无痕的博客 950

java项目路径获取问题

src下的名为ipconfig.properties路径获取问题 1.项目发布后的src目录的配置文件获取 ServletContext context = request.getServletContext(); String path = context.getRealPath("/WEB-INF/classes/ipconfig.properties");...

Hydra的博客 428

Java 关于获取webapp路径问题

Java 关于获取webapp路径问题

hftyfdg的博客 1814

java 获取当前程序的路径,路径中文乱码问题(二)

上节介绍到 使用Class类的getResource("").getPath()获取当前.class文件所在的路径,存在中文乱码问题 下面几种方式会解决乱码问题: 第一种方式: URL url=test.class.getResource(""); System.out.println("不乱码方式一:【"+URLDecoder.decode(url....

xiaolenglala的专栏 1621
上一篇: java对象数据转xml文件(加<![CDATA[]]>)[注解方式]
下一篇: 最近使用WEUI的一些小结
java_trainee
博客等级 码龄10年 12粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值