我正在使用Spring MVC。在我的控制器中,我从MyClass调用了一个函数
MyClass{
public static void readFile(){
File file = new FileReader("myPath/myFile.txt");
...
}
public static void main(String[] args) {
readFile();//No problem
}
}
控制器:
@Controller
public class MyController{
@RequestMapping(value = "/url", method = RequestMethod.GET)
public String readFile(Locale locale, Model model) {
MyClass.readFile();//File not found exception
....
}
}
当我在MyClass的main()中测试时,读取工作正常,但是当我在服务器上运行项目并访问“/ url”时,我得到了这个:
java.io.FileNotFoundException: myPath/myFile.txt (The system cannot find the path specified)
如何在控制器中指定路径?
感谢您的时间。
答案 0 :(得分:0)
服务器上的工作目录是什么?从该目录,服务器上是否存在文件的相对路径(" myPath / myFile.txt")?
假设您只需要阅读myFile.txt,那么通常myFile.txt将包含在WAR中,并通过getResourceAsStream阅读。
答案 1 :(得分:0)
我认为您正在寻找Spring中的Resource
实现。 Spring将确定要使用哪种类型的资源,例如,如果您的文件位于类路径中,Spring将创建ClasspathResource
或指向将创建FileResource
的文件。如果您使用的是Spring 4.请尝试类似
@Value("file:///myPath/myFile.txt")
Resource myFile;
查看此Spring Resources文档
答案 2 :(得分:0)
因为这不是绝对的道路。程序将在工作目录下找到文件 你可以将它添加到第一个程序和第二个程序
System.out.println("Working Directory = " +
System.getProperty("user.dir"));
你会看到差异。