0

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

wtpwebapps->myapp

我的文件在 wtpwebapps->files 文件夹下

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

4 回答 4

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");
于 2013-11-06T07:58:48.370 回答
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

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

于 2013-11-06T08:38:08.923 回答
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.

于 2013-11-06T08:10:08.557 回答
0

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

/files/file1

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

于 2013-11-06T07:57:44.953 回答