组件移动文件导致 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
应该是一个目录。
这就解释了所有问题。
- 您的 sourcePath 指向一个目录。您不能将目录移动到它自己的子目录之一中。这在我所知道的任何文件系统中都没有意义。
- 因为它试图将
/home/user/invoices/import/invoice
移动到 /home/user/invoices/import/invoice/error
,结果目标是创建 error
子目录的 invoice
子目录,或者 /home/user/invoices/import/invoice/error/invoice
.
我的流程中有一个 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
应该是一个目录。
这就解释了所有问题。
- 您的 sourcePath 指向一个目录。您不能将目录移动到它自己的子目录之一中。这在我所知道的任何文件系统中都没有意义。
- 因为它试图将
/home/user/invoices/import/invoice
移动到/home/user/invoices/import/invoice/error
,结果目标是创建error
子目录的invoice
子目录,或者/home/user/invoices/import/invoice/error/invoice
.