我做了一个纯Java应用程序,它告诉我有关给定目录中文件数量的信息。现在,我使用以下代码设置当前目录:
`File f = new File(".");`
之后,我用其jar文件制作了一个安装程序,并将其安装在Windows 8中,然后将其添加到Windows中,右键单击下拉菜单(上下文菜单)。当我从上下文菜单启动它时,它总是告诉我有关实际安装目录的文件数,但是我想从执行目录的位置知道该目录的文件数。
所以请帮助我。我是该领域的新手,我不想让您在当前目录和当前执行目录中感到困惑。因此,我写了这么长时间,并希望用非常简单的话来一个干净的答案。
谢谢
正如Jarrod Roberson在这里的回答中所述:
一种方法是使用系统属性,
System.getProperty("user.dir");
这将为您提供“初始化属性时的当前工作目录”。这可能就是您想要的。java
即使实际的.jar文件可能驻留在计算机上的其他位置,也可以查找发出命令的位置(在您的情况下,在目录中包含要处理的文件)。在大多数情况下,拥有实际的.jar文件的目录不是很有用。以下内容将打印出从中调用命令的当前目录,而不管该.class文件所在的.class或.jar文件。
public class Test { public static void main(final String[] args) { final String dir = System.getProperty("user.dir"); System.out.println("current dir = " + dir); } }
如果您在其中,
/User/me/
并且包含上述代码的.jar文件位于/opt/some/nested/dir/
命令中,java -jar /opt/some/nested/dir/test.jar Test
则将输出current dir = /User/me
。您还应该额外注意使用一个好的面向对象的命令行参数解析器。我强烈推荐Java简单参数解析器JSAP。这样一来,您可以使用
System.getProperty("user.dir")
或替代其他方式来替代行为。一个更加可维护的解决方案。这将使传递目录来进行处理非常容易,并且user.dir
如果没有传递任何内容,则可以依靠它。
示例:GetExecutionPath
import java.util.*;
import java.lang.*;
public class GetExecutionPath
{
public static void main(String args[]) {
try{
String executionPath = System.getProperty("user.dir");
System.out.print("Executing at =>"+executionPath.replace("\\", "/"));
}catch (Exception e){
System.out.println("Exception caught ="+e.getMessage());
}
}
}
以上的输出将像
C:\javaexamples>javac GetExecutionPath.jav
C:\javaexamples>java GetExecutionPath
Executing at =>C:/javaexamples
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句