【发布时间】:2011-12-07 17:36:12
【问题描述】:
Java NIO 在 Windows 上是否需要特殊权限?
当我在 Windows Server 2003 上运行以下 Java 代码时,它失败并出现“拒绝访问”错误(这是 cygwin 终端窗口中的全部消息):
new FileOutputStream(outputFile).getChannel()
.transferFrom(new FileInputStream(inputFile).getChannel(), 0, Long.MAX_VALUE);
但如果我使用 Apache commons-io(我假设它不使用 NIO,它可以使用相同的输入和输出文件:
final FileInputStream inputStream = new FileInputStream(inputFile)
final FileOutputStream outputStream = new FileOutputStream(outputStream)
IOUtils.copy(inputStream, outputStream);
我使用管理员帐户在 Java 5 中运行。是否有一些必须设置的特殊文件权限?
【问题讨论】:
-
可能是 JVM 错误。你试过 Java 6 还是 7?
-
目前无法升级。公司问题。
-
输出文件是否在任何其他应用程序中打开?是否所有应用程序都关闭了此 outputFile 在某一时刻打开? Windows 可能对它认为正在使用的文件有奇怪的问题。换句话说,尝试重新启动机器,然后立即运行该测试。
-
公司政策是否阻止您使用 Java 7 进行测试?它至少会让您了解它是错误还是功能。 ;)
-
@sjngm:这多次失败(对于许多文件)。它们没有被任何其他应用程序打开。我对代码所做的唯一更改是使用 commons-io,然后重新运行。有效。不确定 NIO 使用的内存映射 IO 是否存在问题。
标签: java windows file-permissions nio