如何在Java中读取项目文件夹后退一个文件

时间:2016-06-22 18:04:08

标签: java jsp servlets

我希望在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"));

我该如何实现呢。

提前致谢。

2 个答案:

答案 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()