Java 执行器,文件位置问题

Java 执行器,文件位置问题,java,file-io,command-line,runtime.exec,Java,File Io,Command Line,Runtime.exec,在我的jar应用程序中,我用exe程序进行一些计算。当文件和program.exe位于同一目录中时,我使用了以下命令: String[] str={"program.exe", "file1.txt", "file2.txt"}; pr = rt.exec(str); String[] str={"program.exe", "temp\\file1.txt", "temp\\file2.txt"}; pr = rt.exec(str); 而且效果很好。但当我将文件移动到其他目录并尝试使用以

在我的jar应用程序中,我用exe程序进行一些计算。当文件和program.exe位于同一目录中时,我使用了以下命令:

String[] str={"program.exe", "file1.txt", "file2.txt"};
pr = rt.exec(str);
String[] str={"program.exe", "temp\\file1.txt", "temp\\file2.txt"};
pr = rt.exec(str);
而且效果很好。但当我将文件移动到其他目录并尝试使用以下命令时:

String[] str={"program.exe", "file1.txt", "file2.txt"};
pr = rt.exec(str);
String[] str={"program.exe", "temp\\file1.txt", "temp\\file2.txt"};
pr = rt.exec(str);
program.exe看不到文件。更奇怪的是,当我更改其他默认名称时,它开始看到文件。file1.txt、file2.txt和temp是在program.exe启动之前在我的jar程序中创建的

编辑:
当问题开始出现时,我尝试这样做:默认名称file1.txt和file2.txt,我更改为aaa.txt和bbb.txt(在windows中),然后:

 String[] str={"program.exe", "temp\\aaa.txt", "temp\\bbb.txt"};
它是有效的

edit2:
现在我知道问题出在program.exe中。当我从命令行(而不是jar)使用它时,如下所示:

program.exe temp\file1.txt temp\file2.txt 
错误:

FANN Error 1: Unable to open configuration file "temp\file1.txtÉ║@" for reading.
fann是人工神经网络库。将文件复制到program.exe目录时:

program.exe file1.txt file2.txt 
它起作用了!当我在temp和do中更改文件名时:

program.exe temp\file1aaa.txt temp\file2bbb.txt

它也有效!那么这就是fann lib bug

给出文件名的完整路径,请参见。像下面这样

String[] str = {"program.exe", "D:\\temp\\file1.txt", "D:\\temp\\file2.txt"}; 

如果您的操作系统是基于UNIX的,则相应地对其进行更改。

我会使用ProcessBuilder api(它比
Runtime.exec()
提供更多的控制),并且我还会使用绝对路径:

File directory = new File("/path/tp/program.exe's/parent");

int returnCode = new ProcessBuilder("program.exe", 
    new File(directory, "temp/file1.txt").getAbsolutePath(),
    new File(directory, "temp/file2.txt").getAbsolutePath()
)
.directory(directory).start().waitFor();

您是否尝试过使用相对路径查找位置 像

abc(文件夹)
->代码(文件夹)
-->Program.Java
->温度
-->file1.txt
所以
在Eclipse IDE中运行您的程序时
您的相对路径将来自program.java文件
。/temp/file1.txt
并尝试使用
/
而不是
\
,这样它就不会作为转义字符。
从罐子中运行时 您需要将临时文件夹从jar提取到外部
abc(文件夹)
->jar(文件夹)
-->Program.jar
->温度
-->file1.txt



将jar内容作为zip文件从程序中读取。通过代码访问其中的临时文件夹,然后将内容作为输入流读取。

这里的“本地化问题”是什么。您所说的“任何其他默认设置…”是什么意思?@sudmong,将其更改为“位置”,这就是我想表达的意思。
program.exe
在命令行中运行时是否看到其他目录中的文件?temp目录是否在运行程序的目录中?它没有帮助,而且我的操作系统是win