Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java获取当前文件名EXE_Java_File - Fatal编程技术网

Java获取当前文件名EXE

Java获取当前文件名EXE,java,file,Java,File,这是我的第一个问题 我在Google上搜索,以获取当前的Java文件名。大多数源告诉用户如果文件是JAR文件,如何查找当前文件名,但是我问的是当前文件是否是EXE文件。 我看到一个EXE的答案,但我认为它不起作用 我使用JSmooth EXE包装器(launch4j不知何故对我不起作用)和Java8。我的问题有一个简单的解决方案吗?此外,还可以解释它是如何工作的,或者提供一个指向Java纪录片的链接 EDIT:为了澄清这一点,假设我制作了一个Java程序并使用了一个JAR包装器,我将生成的EXE

这是我的第一个问题

我在Google上搜索,以获取当前的Java文件名。大多数源告诉用户如果文件是JAR文件,如何查找当前文件名,但是我问的是当前文件是否是EXE文件。

我看到一个EXE的答案,但我认为它不起作用

我使用JSmooth EXE包装器(launch4j不知何故对我不起作用)和Java8。我的问题有一个简单的解决方案吗?此外,还可以解释它是如何工作的,或者提供一个指向Java纪录片的链接

EDIT:为了澄清这一点,假设我制作了一个Java程序并使用了一个JAR包装器,我将生成的EXE命名为“test.EXE”。我希望Java程序能够为我提供当前目录“test.exe”,包括文件名本身(test.exe)。

另一个编辑:为了进一步澄清,请转到桌面,创建一个文本文件,并在其中放入一些文本。保存它,并将文本文件更改为EXE文件。然后,试着打开它。Windows将给出一个错误。请注意,消息对话框的标题是如何显示打开文件的文件路径的。这就是我想要的输出类型

谢谢

public class JavaApplication1 {
  public static void main(String[] args) {
       System.out.println("Working Directory = " +
              System.getProperty("user.dir"));
  }
}
这将打印应用程序初始化位置的完整绝对路径。它仅用于获取目录

如果您使用的是.exe,为什么不创建安装程序?您可以使用Inno安装程序,这样您就可以指定将.exe存储在何处,并从应用程序中获取它,只需按照文档传递自定义目录即可

JSmooth还为您的应用程序提供了一些可访问的特殊变量

Form                          Meaning
${EXECUTABLEPATH}             Replaced by the path to the executable binary. For 
                              instance, if the executable binary launched is located
                              at c:/program files/jsmooth/test.exe, this variable 
                              is replaced with c:/program files/jsmooth

${EXECUTABLENAME}             Replaced by the name of the executable binary. For 
                              instance, if the executable binary launched is located
                              at c:/program files/jsmooth/test.exe, this variable is
                              replaced with test.exe 
您可以在JSmooth中的“环境设置”(最后一个面板)下设置这些设置,这允许您映射变量名。所以

MY_EXECUTABLEPATH=${EXECUTABLEPATH}
MY_EXECUTABLENAME=${EXECUTABLENAME}
在应用程序中,您可以使用

String execPath = System.getProperty("MY_EXECUTABLEPATH");
String execName = System.getProperty("MY_EXECUTABLENAME");

是否要获取启动程序的ecuctabel的名称?我只想获取当前目录和当前exe文件,以防用户更改名称。如果它只是一个EXE文件,那么使用Inno安装程序来创建安装程序是没有意义的,不过这是个好主意,它不起作用。包装JAR以使用这些特殊变量时,JSmooth中是否有任何配置更改?@SystemSecurity2009已编辑。用大括号试试看。如果有,文档中不会提到它们。顺便问一下(这是可选的),如果其他人也有同样的问题,但不使用JSmooth,有没有办法解决这个问题?@SystemSecurity2009我不这么认为,纯Java不行。谢谢你提供的信息。另外,在JSmooth中,您可以设置环境变量,其中一个变量的值为${EXECUTABLEPATH}(名称可以是任何名称),另一个变量的值为${EXECUTABLENAME}。然后在Java中,您只需执行System.getProperty(环境变量名)即可获得它(或类似的操作)。