首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Java从$PATH获取可执行文件的绝对路径

使用Java从$PATH获取可执行文件的绝对路径可以通过以下步骤实现:

  1. 获取系统的环境变量$PATH的值。
    • 环境变量$PATH存储了一组目录路径,用于指定可执行文件的搜索路径。
    • 在Java中,可以通过System类的静态方法System.getenv("PATH")来获取$PATH的值。
  2. 将$PATH的值按照路径分隔符(在Windows上是分号;,在Linux和Mac上是冒号:)进行拆分。
    • 在Java中,可以使用String类的split()方法来实现拆分,传入路径分隔符作为参数。
  3. 遍历拆分后的路径列表,逐个尝试获取可执行文件的绝对路径。
    • 在Java中,可以使用File类的构造函数传入路径和可执行文件名来创建File对象。
    • 然后,可以使用File类的exists()方法判断文件是否存在,以及isFile()方法判断是否为可执行文件。
    • 如果找到了可执行文件,可以使用File类的getAbsolutePath()方法获取其绝对路径。

下面是一个示例代码,演示如何使用Java从$PATH获取可执行文件的绝对路径:

代码语言:java
复制
import java.io.File;

public class ExecutablePath {
    public static void main(String[] args) {
        String path = System.getenv("PATH");
        String[] paths = path.split(File.pathSeparator);

        String executableName = "executable"; // 可执行文件名

        for (String dir : paths) {
            File file = new File(dir, executableName);
            if (file.exists() && file.isFile()) {
                String absolutePath = file.getAbsolutePath();
                System.out.println("可执行文件的绝对路径:" + absolutePath);
                break;
            }
        }
    }
}

请注意,以上代码只是一个示例,实际应用中需要根据具体情况进行适当的错误处理、异常处理和路径拼接等操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python3 获取当前路径及os.path.dirname使用

方法一:import sys,osos.getcwd()#然后就可以看见结果了方法二:import osos.path.dirname(os.path.realpath('__file__'))#注意:...添加单引号python中os.path.dirname(__file__)使用(1)当"print os.path.dirname(__file__)"所在脚本是以完整路径被运行, 那么将输出该脚本所在完整路径...(__file__)"所在脚本是以相对路径被运行, 那么将输出空目录,比如:             python test.py             那么将输出空字符串python中os.path.dirname...(path)语法:os.path.dirname(path) 功能:去掉文件名,返回目录  如:print(os.path.dirname('W:\Python_File\juan之购物车.py'))#...结果#W:\Python_Fileprint(os.path.dirname('W:\Python_File'))#结果#W:\

7.4K30

Node.jsfs&path模块使用,获取文件名称等操作

/score-ok.txt', 'utf8', function (err, data) { // 使用path.join()方法拼接路径,__dirname代表当前文件夹路径,__filename代表当前文件路径...()获取文件名&&拓展名 */ const filePath = './007-path.basename()方法使用.js'; // 只传路径,获取是带文件拓展名string const fullName...= path.basename(filePath); // 传入路径、拓展名,得到是不带拓展名文件名string const nameWithOutExt = path.basename(filePath..., '.js'); // 获取文件拓展名 const extName = path.extname(filePath) console.log('fullName:', fullName); console.log...()方法使用.js nameWithOutExt: 007-path.basename()方法使用 extName: .js 读取文件成功了: 小红: 99 小白: 100 小黄: 70 小黑: 66

2.9K30

Java 优化:读取配置文件 万能方式 跨平台,动态获取文件绝对路径

Java 优化:读取配置文件 "万能方式" 跨平台,动态获取文件绝对路径 图片 每博一文案 往事不会像烟雾似的飘散,将永远像铅一般沉重地浇铸在心灵深处。...,可以获取到当前线程类加载对象 getResource() 获取资源:这是类加载器对象方法,当前线程类加载器默认根路径下加载资源。...").getPath(); // 通过该获取文件绝对路径创建 字节输入流对象 f = new FileInputStream(path);...").getPath(); // 通过该获取文件绝对路径创建 字节输入流对象 f = new FileInputStream(path);...当在J Windows 操作系统中编写绝对路径Java程序,移植到到 Linux 操作系统中就会报错。 静态获取绝对路径 和 动态获取绝对路径

73060

Go语言:如何解决读取不到相对路径配置文件问题

) index := strings.LastIndex(path, string(os.PathSeparator)) path = path[:index] 代码分析 os.Args是用来获取命令行执行参数分片...大致意思就是它会去环境变量中找这个可执行文件绝对路径,或相对于当前目录路径。...意思是它会根据传入路径计算出绝对路径,如果传入为相对路径,那么它会把当前路径拼接上 此时返回path是一个包含可执行文件在内完整路径,我们只需要精确到目录即可 index := strings.LastIndex...这样就完成了目录获取,接下来再拼接上我们实际配置文件就可以了 番外 发现不调用exec.LookPath也是可以达到查询绝对路径目的,那么exec.LookPath还有什么用?...path[:index] 我们来看一下源码,exec.LookPath作用是相对路径或环境变量PATH中递归找可执行文件,这起着一个校验作用,检测调用可执行文件是不是真的存在,如果存在再继续往下拼接出绝对路径

7.5K20

windows系统是如何执行用户命令

一直以来,有一个疑问,在windows系统CMD下输入命令,如:javac,熟悉java的人都知道,这是将.java文件编译成.class文件,那么系统是如何找到可执行文件(.exe结尾)呢?...比如说java虚拟机安装后,都需要在系统环境变量中配置好java虚拟机安装路径,也就是JAVA_HOME,一般都是指向jdkbin目录,因为jdk可执行文件都放在bin目录下,如下图所示: [image.png...] 当用户在CMD下输入命令:javac时,windows会按以下步骤执行搜索: 检测用户输入命令是否是绝对路径,如果是绝对路径,那么就会在该路径中查找javac.exe文件 如果不是绝对路径,那么就会在当前命令行所指向路径中查找...java也是如此,细想下每次装完JDK后,都需要去环境变量中增加变量JAVA_HOME,CLASSPATH,还有就是在PATH路径中增加一句:%JAVA_HOME%\bin,JAVA_HOME指向是JDK...安装根目录下bin目录,通过以上可知,操作系统CMD全局识别命令,是通过搜索环境变量PATH(系统和用户PATH),如果在环境变量PATH中配置了可执行文件路径(或者批处理文件路径),那么系统就可以在

84520

三种获取Go项目根目录方式,让你做架构,选哪种?

今天就总结一下在 Go 程序里边怎么获取项目的根目录绝对路径。...os.Getwd os.Getwd() 方法,Go 语言os包Getwd函数能够获取进程的当前工作目录,其实函数名字中wd—working directory (工作目录)缩写,差不多就能猜出来它功能...所以os.Getwd()这个方法获取是进程在OS系统所在目录,仅当在可执行文件所在目录下启动程序情况下才能正确拿到 Go 项目的根目录,这种情况还是不够通用,需要与运维约定项目的启动命令才行。...示例程序里之后两个方法调用会帮我们找到可执行文件所在目录绝对路径。...Go log库到Zap,怎么打造出好用又实用Logger 用它再推断出项目的根目录即可 root := path.Dir(path.Dir(filename)) 用这种方法改造代码后,我们再用上面的几种启动方式

2.8K10

Linux之which命令

which命令 用于查找并显示给定命令绝对路径,环境变量PATH中保存了查找命令时需要遍历目录。which指令会在环境变量$PATH设置目录里查找符合条件文件。...也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行到底是哪一个位置命令。...什么是$PATH 在Linux中,PATH是一个环境变量,它告诉Shell和其他程序哪些目录搜索可执行文件。它由冒号分隔指向包含可执行文件目录绝对路径列表组成。...要查看PATH变量内容,使用echo命令与$PATH作为参数: > echo $PATH /opt/java/jdk1.8.0_231/bin:/usr/local/sbin:/usr/local/bin...要打印所有匹配项,请使用以下-a选项: > which -a touch 输出将显示touch命令两个完整路径: /usr/bin/touch /bin/touch 原文链接:https://rumenz.com

55620

Linux之which命令

which命令 用于查找并显示给定命令绝对路径,环境变量PATH中保存了查找命令时需要遍历目录。which指令会在环境变量$PATH设置目录里查找符合条件文件。...也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行到底是哪一个位置命令。...什么是$PATH 在Linux中,PATH是一个环境变量,它告诉Shell和其他程序哪些目录搜索可执行文件。它由冒号分隔指向包含可执行文件目录绝对路径列表组成。...要查看PATH变量内容,使用echo命令与$PATH作为参数: > echo $PATH /opt/java/jdk1.8.0_231/bin:/usr/local/sbin:/usr/local/bin...要打印所有匹配项,请使用以下-a选项: > which -a touch 输出将显示touch命令两个完整路径: /usr/bin/touch /bin/touch 原文链接:https://rumenz.com

1.1K00

Linux之which命令

which命令 用于查找并显示给定命令绝对路径,环境变量PATH中保存了查找命令时需要遍历目录。which指令会在环境变量$PATH设置目录里查找符合条件文件。...也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行到底是哪一个位置命令。...什么是$PATH 在Linux中,PATH是一个环境变量,它告诉Shell和其他程序哪些目录搜索可执行文件。它由冒号分隔指向包含可执行文件目录绝对路径列表组成。...要查看PATH变量内容,使用echo命令与$PATH作为参数: > echo $PATH /opt/java/jdk1.8.0_231/bin:/usr/local/sbin:/usr/local/bin...要打印所有匹配项,请使用以下-a选项: > which -a touch 输出将显示touch命令两个完整路径: /usr/bin/touch /bin/touch [wx.jpg]

57500

Linux之which命令

which命令 用于查找并显示给定命令绝对路径,环境变量PATH中保存了查找命令时需要遍历目录。which指令会在环境变量$PATH设置目录里查找符合条件文件。...也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行到底是哪一个位置命令。...什么是$PATH 在Linux中,PATH是一个环境变量,它告诉Shell和其他程序哪些目录搜索可执行文件。它由冒号分隔指向包含可执行文件目录绝对路径列表组成。...要查看PATH变量内容,使用echo命令与$PATH作为参数: > echo $PATH /opt/java/jdk1.8.0_231/bin:/usr/local/sbin:/usr/local/...要打印所有匹配项,请使用以下-a选项: > which -a touch 输出将显示touch命令两个完整路径: /usr/bin/touch /bin/touch 原文链接:https://rumenz.com

54610

Vue---后台获取数据vue-resource使用方法

作为前端人员,在开发过程中,我们大多数情况都需要从后台请求数据,那么在vue中怎样后台获取数据呢?接下来,我简单介绍一下vue-resource使用方法,希望对大家有帮助。...三、使用   我今天写了一个小demo,比较简单。 1.HTML 1 <!...钩子本质是一段用以处理系统消息程序,通过系统调用,把它挂入系统。...data(可选,字符串或对象),要发送数据,可被options对象中data属性覆盖。 options  请求选项对象   便捷方法POST请求: 1 this....credentials boolean 表示跨域请求时是否需要使用凭证 emulateHTTP boolean 发送PUT, PATCH, DELETE请求时以HTTP emulateJSON boolean

3.4K20

JAVA语法到案例,定义到使用,详细解释Java 内部类完全实现

内部类 Java 类中可以定义成员有:字段、方法、内部类,内部类是定义在类结构中另一个类,因为定义在类内部,故称为内部类。...在JavaLinkedList源码中,使用一个内部类Node来封装链表列表中每一个节点,在节点中存储了当前节点值,上一个节点,下一个节点这些信息;而这些信息是不能外部对象直接读取和使用,因此...内部类分类:内部类根据使用修饰符不同,或者定义位置不同,分成四种类型; 实例内部类:内部类没有使用static修饰,也就是非静态内部类,定义在类中,方法之外; 静态内部类:内部类使用了static...; 局部内部类访问局部变量必须使用final修饰,在Java 8中是自动隐式加上final,但是依然是常量,值不能被改变; 为什么不推荐使用局部内部类?...关注我,获取更多编程科技知识。

73050

【Android 应用开发】Android 上实现非root Traceroute -- 非Root权限下移植可执行二进制文件 脚本文件

即 /data/data/包名/files/下; 修改文件权限 : 使用命令可以直接修改该目录下权限, 注意这个操作是可以执行; 执行busybox : 在代码中执行 ....使用api解析 (1) 获取 assets 目录文件输入流 InputStream is = context.getAssets().open(source); -- 获取AssetsManager...: 调用 Context 上下文对象 context.getAssets() 即可获取 AssetsManager对象; -- 获取输入流 : 调用 AssetsManager open(String...); is.close(); 将文件写到内存中 : 调用上下文对象 openFileOutput(绝对路径名, 权限), 即可创建一个文件输出流; FileOutputStream output =...context.openFileOutput(destination, Context.MODE_PRIVATE); output.write(buffer); output.close(); (3) 获取文件绝对路径

44120

Java中InetAddress使用(二):获取本机IP地址正确姿势【享学Java

前言 本文接着上文内容,主要解答上文留下疑问:既然不能使用InetAddress#getLocalHost()直接去获取到本机IP地址,那么如何破呢?...本文将会演示它在windows上(本机)以及Linux下运行案例,会有差异,请注意区分。 ---- 直接使用getLocalHost()获取本机IP错误示例 标题已经很明显指出了:这是错误示例。...为何在Linux下请你一定不要使用它来获取本机IP,因为它就是简单读取/etc/hosts内容,所以它默认返回是127.0.0.1非常不靠谱,因此本方法十分不建议在生产上使用。...public boolean isReachable(int timeout); //可以指定本机那个网卡、生存时间ttl 和指定时间来测试网络是否可达。...public boolean isMCOrgLocal(); ---- 总结 关于InetAddress所有内容就介绍到这,相信经过此两篇内容讲解后,你对Java处理域名解析,以及获取本地IP地址时将不会再胆怯

15.7K65

RCTF-Web

如果某个部分为绝对路径,则之前所有部分会被丢弃并从绝对路径部分开始继续拼接。 在 Windows 上,遇到绝对路径部分(例如 r'\foo')时,不会重置盘符。...注意这里 如果某个部分为绝对路径,则之前所有部分会被丢弃并从绝对路径部分开始继续拼接。...那么如果我么上传文件名是绝对路径的话,前面的部分丢弃,直接就是我绝对路径结果 而这里逻辑 文件名不存在 .. 所以可以成功覆盖 /bin/file 文件。...这题看上去确实没啥漏洞利用点,所以这个 /bin/file 可执行文件应该有古怪,分析这个要么找源码分析,要么用 strace 命令看看它有那些系统调用,也许调用了某个动态链接库函数,从而上传有关动态链接库来达到目的...dlsym是一个计算机函数,功能是根据动态链接库操作句柄与符号,返回符号对应地址,不但可以获取函数地址,也可以获取变量地址 劫持 whoami #include #include

47030

后端 | Java 利用substring()和indexOf()字符串中获取指定字符

前6个字符后,“/”第一次出现下标。.../*第二种情况:不知道字符下标,但是知道分割字符是“/”,可以用indexOf()获取字符“/”下标*/ // 第二种情况我们获取id->id1 String...id = str.substring(0, str.indexOf("/")); /*善于思考同学已经发现,第二种情况我们只能获取id,想拿后面其他数据就很难办了,因为我们有两个“.../”,因此就有了第三种情况*/ /*第三种情况:str中有多个相同字符,我们要跳过前几个字符获取后面的数据*/ // 第三种情况我们想获取Riven,但是我们不知道Riven...”之间数据就是我们name字段了 // indexOf()可以传两个参数,第一个是要寻找子字符串,第二个是哪个下标位置开始寻找,这里传入i+1就是跳过了第一个“/”之前下标

3.1K40

CVE-2021-4034 Linux Polkit 权限提升漏洞挖掘思路解读

漏洞分析 Pkexec是一个用来允许授权用户以其他用户身份执行program工具,其参数如下图: 在Pkexec工具 main() 函数中,首先会使用如下图代码处理所接收命令行参数: Pkexec...工具将判断传入参数是否为绝对路径,如果给出非绝对路径,Pkexec工具也将尝试在 path 中定位program,具体做法是在PATH 环境变量目录中搜索要执行program。...”可执行文件。...如果找到这样可执行文件,则将其完整路径返回给 pkexec main() 函数。...name”存在(在当前工作目录中)并且包含一个名为“value”可执行文件,则写入一个指向字符串“name/value”指针越界到 envp[0]; 或者说:如果我们 PATH 是 “PATH=name

1.4K90
领券