下面是一个简单的java应用程序,它打开一个要读取的文件。我已经将它编译成run.jar文件,然后在/var/project
下复制run.jar文件,并且在它附近复制file.txt,当我输入"java -cp run.jar com.text.FileMain"
时,一切都很好。
但是,当将我的目录更改为"/tmp"
,然后输入以下命令时,我的错误是“无法找到file.txt
文件”。实际上,这是预期的结果。在不更改代码的情况下,我能做些什么来运行这个应用程序,因为它是一个API,并且不允许我更改它。
有可能吗?
$ java -cp /var/project/run.jar com.test.FileMain
java.io.FileNotFoundException: file.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileReader.<init>(FileReader.java:55)
at com.test.FileMain.main(FileMain.java:20)
$ pwd /tmp
package com.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class FileMain {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
File file = new File("file.txt");
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String text = null;
while ((text = reader.readLine()) != null) {
list.add(Integer.parseInt(text));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
}
}
// print out the list
System.out.println(list);
}
}
发布于 2014-05-26 08:27:39
您可以使用脚本运行代码。
在/var/文件夹的脚本cd中,然后给出java命令。脚本运行之后,您应该回到/tmp dir中。但是java会运行/var/project,从而找到文件。
脚本的样本来源
#!/bin/bash
/var/project
java -cp /var/project/run.jar com.test.FileMain
保存到'/var/project/run.sh‘给出执行的权限,应该很好
从提示符运行它
$ /var/project/run.sh
发布于 2014-05-26 08:22:41
您可以在file.txt中创建到/tmp的软链接。
ln -s /var/project/file.txt /tmp
发布于 2014-05-26 08:13:06
替换
File file = new File("file.txt");
使用
File file = new File("./file.txt");
https://stackoverflow.com/questions/23874055
复制相似问题