得到当前的classPath的绝对路径的URI几种表示法

本文介绍了通过不同Java API获取当前ClassPath绝对路径的方法。包括使用Thread.currentThread().getContextClassLoader().getResource(); FilePath.class.getClassLoader().getResource(); ClassLoader.getSystemResource(); new File(/).getAbsolutePath(); System.getProperty(user.dir)等方法。
/**
*得到当前的classPath的绝对路径的URI几种表示法
*/
//3.得到的也是当前ClassPath的绝对URI路径。
System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));

//4.得到的也是当前ClassPath的绝对URI路径。
// System.out.println(FilePath.class.getClassLoader().getResource(""));

//5.得到的也是当前ClassPath的绝对URI路径。
System.out.println(ClassLoader.getSystemResource(""));

//人为得到
System.out.println(new File("/").getAbsolutePath());
System.out.println(System.getProperty("user.dir"));
<think>我们正在讨论如何获取当前路径的绝对路径,用户的问题与之前讨论的sudo错误无关,而是关于在不同编程环境中获取绝对路径的方法。 根据用户提供的引用,我们可以总结不同语言下获取当前脚本/文件绝对路径的方法: 1. 在Bash shell脚本中: 使用 `readlink -f "$0"` 获取当前脚本的绝对路径(引用[1])。 2. 在Python中: 方法1:使用 `os.path.abspath(__file__)` 获取当前文件的绝对路径(引用[2])。 方法2:使用 `os.path.realpath(__file__)` 获取规范化的绝对路径(引用[4])。 3. 在Java中: 在Web应用中,可以通过ServletContext的getRealPath方法获取(引用[3])。对于普通Java类,可以使用: String path = MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 或者(更简单): String path = new File("").getAbsolutePath(); 4. 在PHP中: 使用 `$_SERVER['PHP_SELF']` 获取当前执行脚本的文件名(引用[5]),但这只是相对路径。要获取绝对路径,可以使用: $absolute_path = realpath(__FILE__); 用户的问题是“我想获取当前路径的绝对路径”,但没有指明是哪种环境。因此,我们需要分情况说明。 另外,注意“当前路径”可能有两种解释: a) 当前工作目录(current working directory):即运行程序时所在的目录。 b) 当前脚本/文件所在的目录。 我们通常需要的是当前脚本所在的目录(即脚本文件所在的绝对路径),但有时也可能是当前工作目录。 下面按语言和场景给出解决方案: </think>### 如何获取当前路径的绝对路径 在不同编程环境中获取当前路径绝对路径的方法如下: #### 1. **Shell/Bash 脚本** 使用 `readlink` 或 `pwd` 命令: ```bash #!/bin/bash # 获取脚本文件的绝对路径 script_abs_path=$(readlink -f "$0") echo "脚本绝对路径: $script_abs_path" # 获取当前工作目录的绝对路径 current_dir_abs=$(pwd) echo "工作目录绝对路径: $current_dir_abs" ``` - `$0` 表示当前脚本文件名 - `readlink -f` 解析符号链接并返回绝对路径[^1] - `pwd` 直接返回当前工作目录的绝对路径 #### 2. **Python** 使用 `os` 模块: ```python import os # 获取当前文件的绝对路径 file_abs_path = os.path.abspath(__file__) print(f"文件绝对路径: {file_abs_path}") # 获取当前工作目录的绝对路径 dir_abs_path = os.path.abspath(os.getcwd()) print(f"目录绝对路径: {dir_abs_path}") ``` - `__file__` 表示当前执行文件的路径 - `os.path.abspath()` 将路径转换为绝对路径[^2][^4] #### 3. **Java** 通过类加载器或系统属性: ```java // 获取当前类编译后的绝对路径 String classPath = MyClass.class.getProtectionDomain() .getCodeSource().getLocation().getPath(); System.out.println("类路径: " + classPath); // 获取工作目录绝对路径 String workDir = System.getProperty("user.dir"); System.out.println("工作目录: " + workDir); ``` - `user.dir` 系统属性返回当前工作目录[^3] #### 4. **PHP** 使用 `__FILE__` 或 `getcwd()`: ```php <?php // 获取当前文件的绝对路径 $file_abs = realpath(__FILE__); echo "文件绝对路径: $file_abs"; // 获取工作目录绝对路径 $dir_abs = realpath(getcwd()); echo "工作目录绝对路径: $dir_abs"; ``` - `realpath()` 解析路径中的符号链接[^5] #### 关键区别说明 | 方法 | 返回值指向 | |-----------------------|------------------------------| | 文件路径 (如 `__file__`) | 当前**执行文件**的绝对路径 | | 工作目录 (如 `pwd`) | 运行命令时的**当前目录**路径 |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值