当前位置:  开发笔记 > 编程语言 > 正文

获取应用程序的路径

如何解决《获取应用程序的路径》经验,为你挑选了5个好方法。

我最近搜索了如何用Java获取应用程序的目录.我终于找到了答案,但我需要很长时间才能找到这样一个通用术语并不容易.我认为编译一个如何用多种语言实现这一目标的列表是一个好主意.

如果您(不)喜欢这个想法,随意上/下投票,如果您愿意,请提供帮助.

澄清:

包含可执行文件目录当前工作目录(由pwdUnix下给出)之间有一个很好的区别.我最初对前者感兴趣,但也可以随意发布确定后者的方法(澄清你的意思).



1> 小智..:

Java中调用

System.getProperty("user.dir")

new java.io.File(".").getAbsolutePath();

返回当前工作目录.

打电话给

getClass().getProtectionDomain().getCodeSource().getLocation().getPath();

返回包含当前类的JAR文件的路径,或者如果直接从文件系统运行,则返回产生当前类的CLASSPATH元素(路径).

例:

    您的申请位于

     C:\MyJar.jar
    

    打开shell(cmd.exe)和cdC:\ test \子目录.

    使用该命令启动应用程序java -jar C:\MyJar.jar.

    前两个调用返回'C:\ test\subdirectory'; 第三个调用返回'C:\ MyJar.jar'.

从文件系统而不是JAR文件运行时,结果将是生成的类文件的根目录的路径,例如

c:\eclipse\workspaces\YourProject\bin\

该路径不包括生成的类文件的包目录.

获取没有.jar文件名的应用程序目录的完整示例,或者如果直接从文件系统运行,则获取类文件的相应路径(例如,在调试时):

String applicationDir = getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); 

if (applicationDir.endsWith(".jar"))
{
    applicationDir = new File(applicationDir).getParent();
}
// else we already have the correct answer



2> Konrad Rudol..:

.NET(C#,VB,...)中,您可以查询当前Assembly实例Location.但是,这会附加可执行文件的名称.以下代码清理路径(using System.IOusing System.Reflection):

Directory.GetParent(Assembly.GetExecutingAssembly().Location)

或者,您可以使用提供的信息AppDomain来搜索引用的程序集:

System.AppDomain.CurrentDomain.BaseDirectory

VB通过My名称空间允许另一个快捷方式

My.Application.Info.DirectoryPath



3> MrZebra..:

Windows中,使用WinAPI函数GetModuleFileName().为模块句柄传递NULL以获取当前模块的路径.



4> Alex McBride..:

蟒蛇

path = os.path.dirname(__file__)

这得到了当前模块的路径.



5> mouviciel..:

Objective-C Cocoa(Mac OS X,我不知道iPhone的具体情况):

NSString * applicationPath = [[NSBundle mainBundle] bundlePath];


在我的Mac OSX应用程序中,我一直在寻找可执行文件的实际路径(包含在plist中)并使用它:NSString*executablePath = [[NSBundle mainBundle] executablePath]; - 还有一个'executableURL'版本来返回URL而不是字符串
推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有