Java 正在检查大型机FTP服务器上的路径是否为文件或文件夹。
我有一个Java代码,可以将文件从大型机上的FTP传输到本地系统。问题是如何判断给定路径是文件还是文件夹?我不能使用扩展检查,因为我不知道可能的扩展是什么。此外,以下代码始终返回falseJava 正在检查大型机FTP服务器上的路径是否为文件或文件夹。,java,file,filesystems,mainframe,Java,File,Filesystems,Mainframe,我有一个Java代码,可以将文件从大型机上的FTP传输到本地系统。问题是如何判断给定路径是文件还是文件夹?我不能使用扩展检查,因为我不知道可能的扩展是什么。此外,以下代码始终返回false fileSystem.isFile("fileName"); 作为一个大型机文件系统,路径由而不是分隔,因此在最后检查也不起作用 同样,我使用 url="connection url of the mainframe" bufferedInputStream = new BufferedInputStre
fileSystem.isFile("fileName");
作为一个大型机文件系统,路径由
而不是
分隔,因此在最后检查
也不起作用
同样,我使用
url="connection url of the mainframe"
bufferedInputStream = new BufferedInputStream(url.getInputStream());
当源路径中有文件时,它会将文件的内容写入目标,当源路径中有目录时,它会将目录中文件的名称和其他属性写入目标
源为目录时的示例输出为
Name VV.MM Created Changed Size Init Mod Id
QQQQ 01.00 2009/12/18 2009/12/18 12:15 18 18 0 XXXX
RRRR 01.00 2009/12/18 2009/12/18 12:16 19 19 0 XXXXX
如何确定源路径是文件还是文件夹?您不能说您使用的是什么版本的java,或者您是否为主机文件系统使用了特殊的库
你能用它来代替吗?我没有答案,但听起来你在接近Zos。对于那些没有 知道佐斯的事吗
- Zos没有目录
- 他所称的目录可能是PDS(请参阅中的PDS)。对于那些不是大型机背景的人,可以将其视为一种归档(即jar、Tar、zip等)。这不是一个完全准确的描述,PDS有一些限制&使用jar文件没有,但是jar文件是PC中最接近的类比,我能想到的*NIX世界
- 您如何检测它们?不确定,您可能可以访问某个文件属性
org.apache.hadoop.fs.ftp.FTPFileSystem
库,下面的代码片段将通过返回文件列表来工作
FTPFile[] files = ftp.listFiles();
循环遍历文件
并检查file1.isFile()
就足够了。
再次记住,在使用ftp.cwd(inputPath)列出文件之前,先切换到当前工作目录代码>
有关大型机文件系统的解释,请参阅Bruce Martin的回答和下面的注释 事实上,这可能不是一个重复的问题,确切的或其他。有两个大型机文件系统,“Unix文件系统”和“经典文件系统”。前者的行为类似于“普通”Unix。后者没有目录。FTP启动任务中有一些语法上的甜点,使它看起来像是您可以更改目录,但实际上您只是在修改用于将您看到或创建的数据集子集的限定符。同意。“大型机”标签会阻止复制问题。对于那些使用FTP(服务器是z/OS)的人来说,这是一个严重的问题。我已经投票决定重新打开它,我请求所有其他观看此空间的主框架也投票。谢谢@cschneid和@zarchasmpgmr..z/OS确实有目录。看看z/OS Unix系统服务。FWIW、z/OS v1r2及更高版本符合Unix95产品标准:。话虽如此,当你说“他所称的目录可能是PDS[…]”时,你是对的,你的类比很好。cschneid,是的,你是对的,我倾向于忘记Unix系统服务-从未使用过它们&不太清楚Clasic-MVS/ZOS结构如何映射到ZOS的Unix端。另外,这个问题非常简单——MVS/ZOS。另一方面,请注意java是如何使用它的jar文件的,它总是提醒我在大型机上是如何使用加载库的——这是旧的东西又变成了新的东西的另一种情况