如何在webapp中访问我的应用程序附近的文件夹?

时间:2013-11-06 07:33:14

标签: java servlets

我的应用程序位于wtpwebapps文件夹

wtpwebapps->myapp

我的文件位于wtpwebapps->文件夹

wtpwebapps->files->file1
wtpwebapps->files->file2
wtpwebapps->files->file3

我试过

request.getSession().getServletContext().getRealPath();

并得到了这条路

workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

当我追加

"\files\file1"

到路径并访问该文件然后它给我错误

The requested resource is not available

如何解决此问题?

4 个答案:

答案 0 :(得分:1)

试试这个:

File currentDir=new File(request.getSession().getServletContext().getRealPath())
// or try this instead too:
// File currentDir=new File(".");

File myFile=new File(currentDir,"files\\file1");

答案 1 :(得分:0)

如果按字面意思追加\files\file1,这将不起作用,因为反斜杠是转义字符。尝试

/files/file1

Java将转换为平台路径分隔符。

答案 2 :(得分:0)

您可以获得myApp/WEB-INF/classes目录的绝对路径,如下所示:

URL resource = getClass().getResource("/");
String path = resource.getPath();

现在您可以操纵path字符串转到您的文件:

path = path.replace("your_app_name/WEB-INF/classes/", "");
path = path + "files/file1";

此处path现在指的是file1中的wtpwebapps->files

答案 3 :(得分:0)

以下是来自听众的代码......

System.out.println("Inside contextInitialized()");

System.out.println( servletContextEvent.getServletContext().getRealPath("") );
System.out.println( servletContextEvent.getServletContext().getRealPath("/") );

String filePath  = servletContextEvent.getServletContext().getRealPath("/public/file.txt");
File file = new File(filePath);

System.out.println( filePath );
System.out.println( file.exists() );

及其输出......

Inside contextInitialized()
C:\...\WS\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\SampleWebApp
C:\...\WS\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\SampleWebApp\
C:\...\WS\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\SampleWebApp\public\file.txt
true

请注意,我已经编辑了两者之间的路径。