您的位置:首页 > 编程语言 > Java开发

java.io.FileNotFoundException:文件名、目录名或卷标语法不正确

2016-07-12 00:00 218 查看
java.io.FileNotFoundException: file:\D:\software\workspaceower\qms_sc\webroot\WEB-INF\classes\templates\persons.xls (文件名、目录名或卷标语法不正确。)

使用getClass().getResource("/")少了个 getPath

我的错误是调用用poi生成excel文件的方法后,死活就是给我报java.io.FileNotFoundException: D:\ProgramTools\apache-tomcat-6.0.26\webapps\BAW-phaseM\excel\ttakeinventory\2011-10-30_2011-11-26 23:59:59_YS_no_checked_.xls (文件名、目录名或卷标语法不正确。) 的错误。我前思后想,来回跟踪,都没有问题,就是到写入excel文件的时候,愣是写不进去。没办法了,只好请教了一下同事,他看到这个错误后就给我说是因为excel命名的问题,windows下的文件名不允许出现23:59:59类似这样的字符的。后来经验证,果然是这样,我就重新修改了一下名字,这份excel就顺利的诞生啦!哈哈。。真是太高兴啦!

Windows 中文件夹命名规则是:

① 文件名或文件夹名可以由1~256个西文字符或128个汉字(包括空格)组成,不能多于256个字符。

② 文件名可以有扩展名,也可以没有。有些情况下系统会为文件自动添加扩展名。一般情况下,文件名与扩展名中间用符号“.”分隔。

③ 文件名和文件夹名可以由字母、数字、汉字或~、!、@、#、$、%、^、&、( )、_、-、{}、’等组合而成。

④ 可以有空格,可以有多于一个的圆点。

⑤ 文件名或文件夹名中不能出现以下字符:\、/、:、*、?、"、<、>、| 。

⑥ 不区分英文字母大小写。

还有一种java.io.FileNotFoundException的错误,这种错误其实也是因为在这个路径中不存在这个jsp的编译文件。这个错误是我在发布程序到生产机上之后遇到的,原来是因为没有给这个jsp编译,最高效的解决办法是把本地生成的这个jsp的.java和.class文件copy到编译的文件的路径下面。如果是多个jsp文件都是没有编译的话,那就关闭tomcat,清楚缓存,就是把/usr/local/tomcat/work/Catalina的Catalina文件删除,重启就好了。

java.io.FileNotFoundException: /usr/local/tomcat/work/Catalina/localhost/User/org/apache/jsp/caiwushenhe_005fpicking_jsp.java (Permission denied)

at java.io.FileOutputStream.open(Native Method)

at java.io.FileOutputStream.<init>(FileOutputStream.java:179)

at java.io.FileOutputStream.<init>(FileOutputStream.java:70)

at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:141)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:296)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)

at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.ja
7fe0
va:301)

at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)

at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)

at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: