当我使用Java NIO中的Files.copy(Path input, Path output)
方法时,会出现一种奇怪的行为。我使用了两个参数,REPLACE_EXISTING_FILE
和COPY_ATTRIBUTES
。
如果我将文件复制到Windows中的另一个目标,它就会像它应该的那样工作。但是如果我将它从linux目录复制到另一个目录,则会导致AccessDeniedException。写入文件,但复制的文件中没有数据(0字节)。
java.nio.file.AccessDeniedException: Path/To/Target/Nas/File
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixCopyFile.copyFile(UnixCopyFile.java:243)
at sun.nio.fs.UnixCopyFile.copy(UnixCopyFile.java:575)
at sun.nio.fs.UnixFileSystemProvider.copy(UnixFileSystemProvider.java:253)
at java.nio.file.Files.copy(Files.java:1225)
at ch.zkb.asy.asyarch.io.IO.copyFile(IO.java:356)
at ch.zkb.asy.asyarch.io.IO.copyFile(IO.java:376)
为什么它在Windows中有效,而在Linux中无效?权限也应该没问题。