问题描述
我的流程中有一个 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/
我收到一个错误:
消息:对文件“/home/user/invoices/import/invoice”执行“移动”操作到“/home/user/invoices/import/invoice/error/invoice”时发生错误:无法移动目录: /home/user/invoices/import/invoice 到自身的子目录:/home/user/invoices/import/invoice/error/invoice
首先,为什么我会收到错误:
java.io.IOException:无法移动目录:/home/user/invoices/import/invoice 到其自身的子目录:/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
应该是一个目录。
这就解释了所有问题。
- 您的 sourcePath 指向一个目录。您不能将目录移动到其自己的子目录之一。这在我所知道的任何文件系统中都没有意义。
- 因为它试图将
/home/user/invoices/import/invoice
移动到/home/user/invoices/import/invoice/error
,所以结果目标将是创建invoice
子目录的error
子目录,或 {{1} }.