组件移动文件导致 java.io.IOException,并试图移动到错误的文件夹

Component Move file is causing java.io.IOException, and is trying to move to a wrong folder

我的流程中有一个 Move file 组件:

<sub-flow name="MoveFileToErrorDirectorySubFlow" doc:id="51f387ca-5faa-4ba4-af87-008a1698e104" >
    <file:move doc:name="MoveFileToErrorDir" doc:id="c99d732d-2fc5-4512-b50d-c97c9b4e8aff" sourcePath="${invoices.import.path}" targetPath="${invoices.error.path}" config-ref="XMLFile"/>
</sub-flow>

invoices.import.path 指向 /home/user/invoices/import/invoice

invoices.error.path 应该指向/home/user/invoices/import/invoice/error

但是当我试图通过将文件粘贴到 /home/user/invoices/import/invoice/

来 运行 流程时

我得到一个错误:

Message : An error occurred while executing 'move' operation on file '/home/user/invoices/import/invoice' to '/home/user/invoices/import/invoice/error/invoice': Cannot move directory: /home/user/invoices/import/invoice to a subdirectory of itself: /home/user/invoices/import/invoice/error/invoice

首先,为什么我会收到错误消息:

java.io.IOException: Cannot move directory: /home/user/invoices/import/invoice to a subdirectory of itself: /home/user/invoices/import/invoice/error/invoice

第二件事,为什么目标目录是/home/user/invoices/import/invoice/error/invoice而不是/home/user/invoices/import/invoice/error

第三件事,我正在尝试移动一个 文件,但它似乎正在尝试移动整个目录 - 如上所述移动到错误的路径...

我做错了什么?

您似乎在尝试移动目录 (/home/user/invoices/import/invoice) 而不是该目录中的文件(例如 /home/user/invoices/import/invoice/report.csv)。连接器期望 sourcePath path 是文件的路径,包括文件名。顺便说一句,扩展名是名称的一部分,所以不要错过它。

另一方面,targetPath 应该是一个目录。

这就解释了所有问题。

  1. 您的 sourcePath 指向一个目录。您不能将目录移动到它自己的子目录之一中。这在我所知道的任何文件系统中都没有意义。
  2. 因为它试图将 /home/user/invoices/import/invoice 移动到 /home/user/invoices/import/invoice/error,结果目标是创建 error 子目录的 invoice 子目录,或者 /home/user/invoices/import/invoice/error/invoice.