在Spring Controller中加载静态文件


问题内容

我是Spring的新手,如果我在这里看不到明显的答案,就此道歉。

我使用Spring MVC控制器设置了一个小型演示项目,并将其部署到App Engine。在我的控制器中,我想将静态文件的内容读入字符串。最好的方法是什么?

我在Google上搜索了一下,但可能正在寻找错误的内容。我尝试了以下操作,但不起作用:

@Controller
@RequestMapping("/myController")
public class MyController {

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public @ResponseBody String myTest() {

        FileReader fileReader = null;
        BufferedReader bufferedReader = null;
        String content = "";
        try {
            fileReader = new FileReader("file:/WEB-INF/content/somecontent.txt");
            bufferedReader = new BufferedReader(fileReader);
            content = bufferedReader.readLine();
            bufferedReader.close(); 
        }
        catch (Exception ignored) { 
            // ignore
        }
        return content;
    }
}

任何朝着正确方向的推动将受到高度赞赏:-)


问题答案:

FileReader的符号“ file:”和“ classpath:”不正确。我建议您创建一个FileSystemResource

FileSystemResource resource = new FileSystemResource("/WEB-INF/content/somecontent.txt");

然后使用getFile()或getInputStream()读取文件。这在Web应用程序中非常有用,因为您可以使用相对路径。