尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Java文件路径/服务器路径的获取

Java文件路径/服务器路径的获取
📅 发布时间:2026/6/19 9:45:18
Java文件路径/服务器路径的获取

Java文件路径/服务器路径的获取

大家好,又见面了,我是你们的朋友全栈君。

Java文件路径获取

  • 几种获取方式

getResourceAsStream ()返回的是inputstreamgetResource()返回:URLClass.getResource(“”) 返回的是当前Class这个类所在包开始的为置Class.getResource(“/”) 返回的是classpath的位置getClassLoader().getResource(“”) 返回的是classpath的位置getClassLoader().getResource(“/”) 错误的!!

Class.getResourceAsStream 和 ClassLoader.getResourceAsStream

这两个方法还是略有区别的, 以前一直不加以区分,直到今天发现要写这样的代码的时候运行错误,才把这个问题澄清了一下。基本上,两个都可以用于从classpath里面进行资源读取,classpath包含classpath中的路径和classpath中的jar
两个方法的区别是资源的定义不同,一个主要用于相对与一个object取资源,而另一个用于取相对于classpath的资源,用的是绝对路径
在使用Class.getResourceAsStream 时,资源路径有两种方式,一种以/开头,则这样的路径是指定绝对路径,如果不以/开头,则路径是相对于这个class所在的包的。在使用ClassLoader.getResourceAsStream时,路径直接使用相对于classpath的绝对路径。
举例,下面的三个语句,实际结果是一样的

com.explorers.Test.class.getResourceAsStream(“abc.jpg”)

com.explorers.Test.class.getResourceAsStream(“/com/explorers/abc.jpg”)

ClassLoader.getResourceAsStream(“com/explorers/abc.jpg”)

  • 平时写程序的时候,很多时候提示文件找不到,而抛出了异常,现在整理如下

1、相对路径的获得说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的Java项目还是web项目)

String relativelyPath=System.getProperty(“user.dir”);

上述相对路径中,java项目中的文件是相对于项目的根目录web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对于tomcat安装目录\bin)

2、类加载目录的获得(即当运行时某一类时获得其装载目录)

1)通用的方法一(不论是一般的java项目还是web项目,先定位到能看到包路径的第一级目录)

InputStream is=TestAction.class.getClassLoader().getResourceAsStream(“test.txt”);

(test.txt文件的路径为项目名\src\test.txt;类TestAction所在包的第一级目录位于src目录下)

上式中将TestAction,test.txt替换成对应成相应的类名和文件名字即可

2)通用方法二 (此方法和1中的方法类似,不同的是此方法必须以’/’开头)

InputStream is=Test1.class.getResourceAsStream(“/test.txt”);

(test.txt文件的路径为项目名\src\test.txt,类Test1所在包的第一级目录位于src目录下)

3、web项目根目录的获得(发布之后)

(1)从servlet出发

可建立一个servlet在其的init方法中写入如下语句

ServletContext s1=this.getServletContext();

String temp=s1.getRealPath(“/”); (关键)

结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\ (002_ext为项目名字)

如果是调用了s1.getRealPath(“”)则输出D:\工具\Tomcat-6.0\webapps\002_ext(少了一个”\”)

(2)从httpServletRequest出发

String cp11111=request.getSession().getServletContext().getRealPath(“/”);结果形如:D:\工具\Tomcat-6.0\webapps\002_ext\

4、classpath的获取(在Eclipse中获得src或者classes目录的路径)

方法一:Thread.currentThread().getContextClassLoader().getResource(“”).getPath()

eg: String t=Thread.currentThread().getContextClassLoader().getResource(“”).getPath();

System.out.println(“t—“+t);

输出:t—/E:/order/002_ext/WebRoot/WEB-INF/classes/

方法二:JdomParse.class.getClassLoader().getResource(“”).getPath() (JdomParse为src某一个包中的类,下同)

eg:String p1=JdomParse.class.getClassLoader().getResource(“”).getPath();

System.out.println(“JdomParse.class.getClassLoader().getResource–“+p1);

输出: JdomParse.class.getClassLoader().getResource–/E:/order/002_ext/WebRoot/WEB-INF/classes/

另外,如果想把文件放在某一包中,则可以通过以下方式获得到文件(先定位到该包的最后一级目录)

eg String p2=JdomParse.class.getResource(“”).getPath();

System.out.println(“JdomParse.class.getResource—“+p2);

输出: JdomParse.class.getResource—/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/ (JdomParse为src目录下jdom包中的类)

5、属性文件的读取:方法一:

InputStream in = lnew BufferedInputStream( new FileInputStream(name));

Properties p = new Properties();

p.load(in);

注意路径的问题,做执行之后就可以调用p.getProperty(“name”)得到对应属性的值

方法二:

Locale locale = Locale.getDefault();

ResourceBundle localResource = ResourceBundle.getBundle(“test/propertiesTest”, locale);

String value = localResource.getString(“test”);

System.out.println(“ResourceBundle: ” + value);

工程src目录下propertiesTest.properties(名字后缀必须为properties)文件内容如下:

test=hello word

public class FileTest { public static void main(String[] args) { System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));System.out.println(FileTest.class.getClassLoader().getResource(""));System.out.println(ClassLoader.getSystemResource(""));System.out.println(FileTest.class.getResource(""));System.out.println(FileTest.class.getResource("/")); // Class文件所在路径System.out.println(new File("/").getAbsolutePath());System.out.println(System.getProperty("user.dir"));}}

输出结果:file:/E:/workspace/JavaStudy/bin/ file:/E:/workspace/JavaStudy/bin/ file:/E:/workspace/JavaStudy/bin/ file:/E:/workspace/JavaStudy/bin/test/ file:/E:/workspace/JavaStudy/bin/ E:\ E:\workspace\JavaStudy

参考地址:http://blog.csdn.net/ak913/article/details/7399056

  • Java获取服务器路径
    1. String contextPath = request.getContextPath();
    2. String realPath = request.getSession().
    3. getServletContext().getRealPath(“/”);
    4. String basePath = request.getScheme()+“://”+request.getServerName()+“:”+
    5. request.getServerPort()+contextPath+“/”;

说明

contextPath =”/项目名称”; //获取的是项目的相对路径

realPath = F:\tomcat_home\webapps\项目名称\ //获取的是项目的绝对路径(Tomcat服务器中项目所在目录)

basePath = http://localhost:8080/项目名称/ //获取的是服务的访问地址(浏览器中访问地址)

String serviceRoot = request.getScheme()+“://”+request.getServerName()+“:”

+request.getServerPort()+request.getContextPath()+“/”;

参考地址:http://blog.csdn.net/clyao_123456/article/details/51098479

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157583.html原文链接:https://javaforall.cn


原文链接:https://cloud.tencent.com/developer/article/2106028

相关新闻

  • Appcrawler自动遍历工具-智能遍历测试与测试用例生成
  • [USACO20FEB] Clock Tree S
  • mysql查看表大小,4种实用方法

最新新闻

  • 2026随州黄金回收白银回收铂金回收门店实测|本地正规实体老店无套路门店推荐 - 中安检金银铂钻回收
  • 2026 无锡无套路黄金回收商家白名单排行:线上预估价等同到手价门店汇总 - 开心测评
  • STM32CubeMX实战指南:FreeRTOS消息队列在任务间高效通信的设计与实现
  • 面试官坏笑:“你用 AI 编程半年了,那怎么保证 Claude Code 写出来的代码是对的?”我:“直接用 Claude Opus 4.8!”
  • 广州海珠区金价高位运行,市民上门变现正当时 - 上门黄金回收
  • 合肥市管道漏水检测,室外地埋消防市政主管网漏水检测一站式服务 - 同城资讯

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号