【发布时间】:2021-03-11 01:31:58
【问题描述】:
我需要一种方法来显示(远程)目录的内容,并且由于主应用程序大量使用 Apache Camel,我想依赖 Apache Camel 再次完成这项任务。
因此,目标是创建一个文件资源管理器视图,其中列出了基本目录内容(目录和文件),并且通过单击给定目录,应通过显示其内容来刷新视图,等等...一种 FTP 客户端(例如 WinSCP、FileZilla 等),让用户可以根据上下文浏览一个目录,该目录可以是远程的也可以是本地的。
如果我必须使用Apache Camel,我会使用:
-
file component收集本地目录内容 -
sftp component收集远程目录内容
然后,从给定的基目录开始,我将使用recursive=true 检索其全部内容(因此,基目录和所有子目录包含的所有文件)。这样,通过将结果映射到树中并将其保存在内存中,我将能够识别目录结构并向用户仅显示特定的信息子集,具体取决于其导航。
但是,这种方法至少有三个副作用:
- 由于立即检索完整结构,因此无法根据用户导航延迟加载给定节点
- 同样,有必要将完整结构保存在内存中,即使用户正在查看包含例如单个文件的叶子
- 不可能显示空目录...据我所知,事实上,Camel 只读取文件,以防目录 /D 包含文件
F.txt和空目录/E,Camel 组件会返回/D/F.txt,而不是/D/E,这是一个目录
点 1 和 2 可能通过指定 maxDepth=2 来修复,以便识别当前级别的所有文件和所有目录...但是,再次考虑以下结构:
root
|_ file1.txt
|_ sub-dir-1
|_ sub-dir-1-A
|_ nested-file.txt
|_ sub-dir-2
|_ file2.txt
file component,从root 开始,具有recursive=true 和maxDepth=2,只会返回
- /root/file1.txt
- /root/sub-dir-2/file2.txt
(没有sub-dir-1,它不直接包含文件)。
所以,我的问题是:
- Apache Camel 是正确的选择吗?
- 在 Apache Camel 中是否有更好的方法来导航给定目录?
- 在 Apache Camel 中是否也可以检索有关空目录的信息?
【问题讨论】:
-
恕我直言,您应该为您的问题提供一个代码示例,以便使问题更加具体。
-
您还应该从您的问题中抽象出前端逻辑。你检查过 Apache Camel 文件监视组件吗? camel.apache.org/components/latest/file-watch-component.html
标签: apache-camel ftp-client camel-ftp camel-file