FileNotFoundException访问被拒绝

时间:2015-12-29 15:52:39

标签: java file jsp tomcat filenotfoundexception

FileNotFoundException我遇到了一些问题。

  

java.io.FileNotFoundException:C:\ Program Files(x86)\ Apache Software   基础\ Tomcat 7.0 \ webapps \ folder \ folder \文件夹(访问被拒绝)at   java.io.FileOutputStream.open(Native Method)at   java.io.FileOutputStream。(未知来源)at   java.io.FileOutputStream。(未知来源)at   org.apache.commons.fileupload.disk.DiskFileItem.write(DiskFileItem.java:416)       在org.apache.jsp.control_jsp._jspService(control_jsp.java:2715)at   org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)at   javax.servlet.http.HttpServlet.service(HttpServlet.java:728)at at   org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)       在   org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)       在org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)       在javax.servlet.http.HttpServlet.service(HttpServlet.java:728)at   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)       在   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)       在   org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)       在   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)       在   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)       在   net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:206)       在   net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:179)       在   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)       在   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)       在   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)       在   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)       在   org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)       在   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)       在   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)       在   org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)       在   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)       在   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)       在   org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)       在   org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:603)       在   org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:312)       at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)       at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)       在java.lang.Thread.run(未知来源)

该文件是从网络表单上传的。我不认为上面的代码是有原因的。

代码:

String itemName = item.getName();
if (itemName.indexOf("\\") != -1) {
    int slash = itemName.lastIndexOf("\\");
    if (slash != -1) {
        itemName = itemName.substring(slash + 1);
    }
    // I think Windows doesn't like /'s either
    int slash2 = itemName.lastIndexOf("/");
    if (slash2 != -1) {
        itemName = itemName.substring(slash2 + 1);
    }
    // In case the name is C:foo.txt
    int slash3 = itemName.lastIndexOf(":");
    if (slash3 != -1) {
        itemName = itemName.substring(slash3 + 1);
    }
}
File savedFile = new File(config.getServletContext().getRealPath("/") + "filing/" + itemName);
item.write(savedFile);

对于我的网络应用中的更多文件夹,会发生这种情况。

我搜索了互联网上的解决方案,但我发现这个特定错误的唯一方法就是:

该文件夹无法访问,就像它被写保护(只读)一样,但我的文件夹可以访问除特殊权限和完全控制之外的所有文件夹。

顺便说一下,我的所有文件夹都是在代码中动态创建的。

P.S代码不是我的,我只是每天在我的webapp stderr中发现这些错误,它似乎没有产生问题,但我想解决它。

有没有人遇到同样的问题或者可以提供帮助?

我知道这不是一个非常严肃的问题,但问题永远不会伤害。

提前致谢。

0 个答案:

没有答案