我正在为一个程序创建一个简单的GUI,允许用户选择要运行的属性文件。我有一个JFileChooser,允许用户选择他们的属性文件。我想这样做如果没有使用JFileChooser选择文件,将使用在我的Project文件夹的根目录中找到的默认文件。然后将该文件添加到列表<字符串>与ProcessBuilder一起使用以运行实际程序。此GUI最终将导出到可运行的jar文件中。但是,由于某种原因,我无法将默认文件添加到列表中,即使它位于根目录中;如果它存储在根目录中,我应该可以访问它。当我打印出文件的路径时,它显示它存储在我的工作区中并且可以访问它但是它不会将它添加到列表中。字符串>。
关于如何做到这一点的任何想法?
以下是我的一些代码:
public void createCommand()
{
List<string> commands = new ArrayList<string>()
commands.add("cmd.exe");
commands.add("/k");
command.add("java");
command.add("-jar");
commands.add("\"" + filepathtojar + "\\" + "testjar.jar");
File user_default = new File("user.default.properties");
//user.default.properties is in the root directory of the project
String propertypath = getPropertyFilePath();
if(propertypath.isEmpty()) // nothing is chosen in the JFileChooser
{
commands.add("-c");
System.out.println("default file's path is: " + user_default.getAbsolutePath());
commands.add(user_default.getAbsolutePath());
}
else // if a file is chosen in the JFileChooser
{
commands.add("-c");
commands.add(propertypath);
}
ProcessBuilder testprocess = new ProcessBuilder(commands);
...
Etc.
}
我的getPropertyFilePath()方法是这样的:
//this method is in another class
public void getPropertyFilePath()
{
//returns the path to the PROPERTIES file chosen in the JFileChooser
return filechosenfromjfile.getAbsolutePath();
}
当我打印出命令时,如果未使用JFileChooser选择属性文件,则会出现这种情况:
[cmd.exe,/ k,“java,-jar,testjar]
如果选择了属性文件,则命令如下所示:
[cmd.exe,/ k,“java,-jar,testjar,-c,properties_file”]
我已经尝试将默认文件写入临时文件并将该临时文件添加到列表中&lt;字符串&gt;但它不起作用。我目前的做法是让用户访问该默认文件并让他们在JFileChooser中选择它,但我宁愿不必这样做。
为什么在将testjar.jar添加到列表&lt;字符串&gt; ?
答案 0 :(得分:0)
编辑:忽略回答
因此,如果我理解了这个问题,那么当没有提供属性文件时,您希望它在, -c, properties_file
之后添加testjar
吗?
如果propertyPath
不为空,则您发布的代码只会添加该部分。只需将else的内容添加到if语句中。
if(propertypath.isEmpty()) // nothing is chosen in the JFileChooser
{
commands.add("-c");
System.out.println("default file's path is: " + user_default.getAbsolutePath());
commands.add(user_default.getAbsolutePath());
commands.add("-c");
commands.add(propertypath);
}
else // if a file is chosen in the JFileChooser
{
commands.add("-c");
commands.add(propertypath);
}
如果有帮助,请告诉我。