FileInputStream中的java.io.FileNotFoundException,带有限定文件名

时间:2013-08-05 10:32:00

标签: java fileinputstream

通过以下代码获取以下错误: 我在FileInputStream构造函数中传递了完全添加的文件名。 EX-:     本地主机:8080 / PROJECTNAME / OuterFolder / InnerFloder / example.doc

logger.info("File Path: "+ path+"/OuterFolder/InnerFloder/"+fileName);

POIFSFileSystem  fs = new POIFSFileSystem(new 
                 FileInputStream(path+"/OuterFolder/InnerFloder/"+fileName));
http:\localhost:8080\projectName\OuterFolder\InnerFloder\Example.doc (The filename, directory name, or volume label syntax is incorrect)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at com.avi.service.UserService.createPolicy(UserService.java:1339)
    at com.avi.service.UserService$$FastClassByCGLIB$$de8fbe27.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:617)
    at com.avi.service.UserService$$EnhancerByCGLIB$$7c22f094_2.createPolicy(<generated>)
    at com.avi.controller.TestController.openPolicy(TestController.java:2733)

2 个答案:

答案 0 :(得分:3)

http:\localhost:8080\projectName\OuterFolder\InnerFloder\Example.doc

不是有效的文件路径。在Windows上没有“驱动”字母“http:”,如“C:”。 事实上我怀疑,“InnerFloder”也存在。

如果从Web应用程序获取,请使用以下in

URL url = new URL(path + "/OuterFolder/InnerFloder/Example.doc");
InputStream in = url.openStream();

要在某处写入文件(您无法将其写回网络应用http://...),请选择一个文件:

File file = new File("C:/OuterFolder/InnerFloder/" + fileName);
file.getParentFile().mkdirs(); // Create any missing directories
OutputStream out = new BufferedOutputStream(new FileOutputStream(file));
fs.writeFileSystem(out);
out.close();

这是一个新文件。

答案 1 :(得分:1)

FileInputStream需要文件系统中的实际文件路径而不是URL。