寫入文件我已經上被指示覆制在本地映射的網絡目錄中的文件,例如N:\some\directory\file.txt
的Windows上的Tomcat 7.0.42此Web應用程序,但它沒能做到所以。的Tomcat Web應用程序不能在網絡
定義輸出文件,我使用的URI語法file:///n:/some/directory/file.txt
,但兩者Files.copy
和FileUtils.copyFile
拋出IOException
一些不那麼有用的錯誤信息:
URI desturi = new URI(srcpath);
File dest = new File(desturi);
Files.copy(source.toPath(), dest.toPath());
// error message: "c:\local\dir\file.txt -> n:\some\directory\file.txt"
FileUtils.copyFile(source, dest);
// error message: "Destination 'N:\some\directory' directory cannot be created"
一些額外的信息:
- 我當然可以讀取並在該目錄上寫
- 一個可執行的.jar可以複製FIL e沒有問題
- 如果目標位於本地驅動器,一切正常
- 我不認爲安全管理器已加載,但我該如何檢查它?
- 在Tomcat啓動與我用來登錄同一用戶(例如
user.name
是一樣的USERNAME
環境變量)
我的想法......
更新片段的堆棧痕跡。對於Files.copy
:
java.nio.file.NoSuchFileException: c:\local\dir\file.txt -> n:\some\directory\file.txt
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileCopy.copy(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.copy(Unknown Source)
at java.nio.file.Files.copy(Unknown Source)
at it.augea.print.server.MyClass.copyFileToPath(MyClass.java:886)
at it.augea.print.server.MyServlet.doPost(MyServlet.java:126)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
爲FileUtils.copyFile
:
java.io.IOException: Destination 'N:\some\directory' directory cannot be created
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:1015)
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:968)
at it.augea.print.server.MyClass.copyFileToPath(MyClass.java:886)
at it.augea.print.server.MyServlet.doPost(MyServlet.java:126)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
阿帕奇Commons.io是V2.2,順便說一句。查看源代碼,這些是涉及的行:
File parentFile = destFile.getParentFile();
if (parentFile != null)
if (!parentFile.mkdirs() && !parentFile.isDirectory())
throw new IOException("Destination '" + parentFile + "' directory cannot be created");
你可以通過提及絕對路徑複製文件? – Jhanvi
請使用堆棧跟蹤發佈這些不太有用的錯誤消息 – WeMakeSoftware
@Jhanvi I * am *使用絕對路徑。更重要的是,規範的路徑。我不是嗎? – MaxArt