我希望在tomcat服务器上部署时从项目文件夹的后退一个路径读取文件。 例如:
项目文件夹:
apache-tomcat-7.0.63/webapps/Test/index.jsp
现在我想读取webapps文件夹中的文件
apache-tomcat-7.0.63/webapps/test.xml
使用
File inputFile = new File(getServletContext().getRealPath("test.xml"));
我该如何实现呢。
提前致谢。
答案 0 :(得分:2)
您必须从基本上下文目录中获取父目录路径:
@RunWith(SpringJUnite4ClassRunner.class)
@SpringApplicationConfiguration(classes = {TestApplication.class, UpdateServiceTest.TestAddOn.class})
@WebAppConfiguration
public class UpdateServiceTest {
@Autowired
private UpdateService updateService;
private static UserService mockUserService;
static class TestAddOn {
@Bean
@Primary
UserService updateService() {
mockUserService = Mockito.mock(UserService.class);
return mockUserService;
}
}
}
然后将其与所需的文件名连接:
File contextBasePath = new File(getServletContext().getRealPath(""));
答案 1 :(得分:-1)
getServletContext().getRealPath("/")
给出了cotext root的文件系统路径,但是不同的容器可能会返回结束斜杠(甚至是同一供应商的不同版本)。因此,使用这些行可以实现对文件的故障安全访问(假设确实存在)
String path = getServletContext().getRealPath("/").replaceAll("[/\\\\]$", "")+ "/../test.xml";
您可以检查java是否可以使用
加载文件new File(path).exists()