错误:java.io.ioexception:句柄无效

bzzcjhmw  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(829)

我试图将文件从一个位置移动到另一个位置,当我通过命令提示符运行.jar时,它工作正常,但当robot调度器(使用不同的服务帐户)触发jar时,出现以下错误

  1. java.io.IOException: The handle is invalid
  2. at java.io.WinNTFileSystem.canonicalize0(Native Method)
  3. at java.io.WinNTFileSystem.canonicalize(Unknown Source)
  4. at java.io.File.getCanonicalPath(Unknown Source)
  5. at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:1076)
  6. at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:1040)

下面是我用于filemove的方法

  1. public static Boolean fileMove(File source, String destination) {
  2. LOG.info(destination + File.separator + source.getName());
  3. LOG.info(source.getAbsolutePath());
  4. File dest = new File(destination + File.separator + source.getName());
  5. try {
  6. FileUtils.copyFile(source, dest);
  7. return FileUtils.contentEquals(source, dest) && Files.deleteIfExists(source.toPath());
  8. } catch (IOException e) {
  9. LOG.warn("IO Error Occurred during file Operations", e);
  10. return false;
  11. }
  12. }
  13. ``` `LOG.info(destination + File.separator + source.getName())` 日志记录在路径//uk001/eucl/email\u broker\u archive\mime-message--7431406574003289236.eml下
  14. (destination=//uk001/eucl/email\u broker\u archive,file.separator='\',source.getname()=mime-message--7431406574003289236.eml) `LOG.info(source.getAbsolutePath())` 正在低于路径记录
  15. \uk001\eucl\source\0002\mime-message--7431406574003289236.eml
  16. 服务帐户(cmd和robot scheduler)都有r/w权限,并且应用程序正在windows服务器上运行。
cx6n0qe3

cx6n0qe31#

似乎是文件分隔符与操作系统的文件分隔符不匹配的问题。
//uk001/eucl/email\u broker\u archive\mime-message--7431406574003289236.eml
请更换并检查\是否存在问题。另外,在一直复制文件之前,请执行if检查文件是否存在。

  1. if (!Files.exists(dest)) {
  2. FileUtils.copyFile(source, dest);
  3. return FileUtils.contentEquals(source, dest) && Files.deleteIfExists(source.toPath());
  4. //Modify the check above accordingly as the file exists check is already done.
  5. }

相关问题