我的应用程序位于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
如何解决此问题?
答案 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
请注意,我已经编辑了两者之间的路径。