博客
关于我
Java-很深我只知其一-路径获取/处理
阅读量:617 次
发布时间:2019-03-13

本文共 1118 字,大约阅读时间需要 3 分钟。

Java路径获取与处理指南

在Java开发过程中,路径处理是日常工作中的常见操作之一。本文将涵盖从获取容器根路径到处理绝对路径的详细方法。

获取发布容器的根路径

在获取Web项目的根路径时,可以通过以下步骤实现:

  • 使用request对象获取ServletContext:

    request.getSession().getServletContext().getRealPath("/")
    • 以上代码将返回当前应用程序的根路径,路径以操作系统的默认设备文件分隔符表示。
    • 若需在特定包名下获取路径,可将"/"替换为对应包名。
  • 获取以类路径为基准的绝对路径:

    当前类.class.getResource("/").toURI().getPath();
    • 若返回值为null,仅需去掉toURI层即可:
    当前类.class.getResource("/").getPath();
    • 此方法返回的是当前类所在路径,以jar文件的路径为基准。
  • 获取项目根目录

    要获取项目所在工作空间的根目录,可采用以下方法:

  • 使用系统属性:

    String path = System.getProperty("user.dir");
    • 这种方法适用于已知项目根路径时,简单直观。
  • 注意路径处理:

    • 不同操作系统使用不同的设备分隔符(/在Linux,\在Windows),处理时需统一使用File.separator进行处理,以提高代码的跨平台性。
  • 实战示例

    以下是一些实际开发中的路径处理案例,供参考:

    • 循环处理父目录

      假设需要获取当前类所在套uses的根路径,可以通过循环截取处理:

      URL resource = 当前类.class.getResource("...");  while (resource.getPath().contains ../) {      resource = resource.getParent();  }      resource.getPath();
    • 获取项目根目录

      有时需要访问项目的物理根目录,可以通过以下方式:

      String rootPath = new File(System.getProperty("user.dir")).getCanonicalPath();
      • 使用getCanonicalPath()可以获取绝对路径,去除相对性链接。

    总结

    路径处理是Java开发中的一个基础操作,熟练掌握这些方法能显著提升开发效率。在实际应用中,多注意路径的基础分隔符及跨平台性问题,以减少潜在bug。

    如需更深入的学习,可以结合实际项目进行实践,逐步掌握路径处理的技巧。

    注:本文为技术交流内容,仅供参考,未经授权不得转载。

    你可能感兴趣的文章
    ntko web firefox跨浏览器插件_深度比较:2019年6个最好的跨浏览器测试工具
    查看>>
    ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
    查看>>
    ntp server 用法小结
    查看>>
    ntpdate 通过外网同步时间
    查看>>
    ntpdate同步配置文件调整详解
    查看>>
    NTPD使用/etc/ntp.conf配置时钟同步详解
    查看>>
    NTP及Chrony时间同步服务设置
    查看>>
    NTP服务器
    查看>>
    NTP配置
    查看>>
    NUC1077 Humble Numbers【数学计算+打表】
    查看>>
    NuGet Gallery 开源项目快速入门指南
    查看>>
    NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
    查看>>
    nuget.org 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
    查看>>
    Nuget~管理自己的包包
    查看>>
    NuGet学习笔记001---了解使用NuGet给net快速获取引用
    查看>>
    nullnullHuge Pages
    查看>>
    NullPointerException Cannot invoke setSkipOutputConversion(boolean) because functionToInvoke is null
    查看>>
    null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
    查看>>
    Number Sequence(kmp算法)
    查看>>
    Numix Core 开源项目教程
    查看>>