我想在dev-test-prod安裝程序中放置一些核心文件。基本上,如果文件較新,則需要將其作爲質量檢查過程的一部分複製到下一級別。Java NIO Files.createFile()失敗,出現NoSuchFileException
我使用的是Java 8,因此我決定嘗試第一次使用NIO文件/路徑apis。我很老,從事編程已經48年了,自1996年初以來幾乎完全使用Java,以及自發布之後的每一個版本,所以這個NIO「增強」應該不會太難以吸收,但是。 。 。
FileSystem fs = FileSystems.getDefault();
Path in = fs.getPath(fromFileName);
Path out = fs.getPath(toFileName);
if (Files.exists(out)) {
FileTime inTime = Files.getLastModifiedTime(in);
FileTime outTime = Files.getLastModifiedTime(out);
if (0 > outTime.compareTo(inTime)) {
Files.copy(in, out, StandardCopyOption.REPLACE_EXISTING);
}
} else {
Files.createFile(out);
Files.copy(in, out);
}
最初我只是試圖Files.copy()不Files.createFile(),並得到了NoSuchFileException上的副本()調用。
我看了幾個引用這個的StackOverflow帖子,其中一個聲明權威地說,如果目標文件尚不存在,copy()將會失敗。對於我的生活,我無法理解爲什麼設計師認爲這是一個好主意,但也是如此。我相應地添加了上面的createFile()調用(讀取了文件的API文檔,它說Files.createFile()「創建一個新的空文件,如果文件已經存在則失敗。」當我再次運行它時,但是在createFile()而不是copy()上,注意路徑在Windows的home目錄中,所以不會發生任何拒絕訪問的問題,除了包含這個項目的Eclipse之外,沒有任何東西在我的PC上運行?這個時候
java.nio.file.NoSuchFileException: C:\Users\ChrisGage\myproject\site\ttws\css\core.css
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(Unknown Source)
at java.nio.file.Files.newByteChannel(Unknown Source)
at java.nio.file.Files.createFile(Unknown Source)
...
我在做什麼錯
也許一個文件夾丟失,因此無法創建文件? – 2014-12-06 18:51:04