检查Mainframe FTP服务器上的路径是文件还是文件夹。

时间:2013-01-17 06:38:27

标签: java file filesystems mainframe

我有一个Java代码,可以将文件从大型机上的FTP传输到我的本地系统。问题是如何判断给定路径是文件还是文件夹?我不能使用检查扩展,因为我不知道可能的扩展是什么。此外,以下代码始终返回false,

 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

如何确定源路径是文件还是文件夹?

3 个答案:

答案 0 :(得分:2)

我没有答案,但听起来你正在接受Zos。对于那些没有 了解任何关于Zos的事情

  • Zos 目录
  • 他所谓的目录可能是PDS(参见Dataset中的PDS)。对于那些不是来自大型机背景的人,可以将其视为一种存档(即jar,tar,zip等)。这不是一个完全准确的描述,PDS有一些限制&使用jar文件没有,但是jar文件是PC中最接近的类比,我能想到的是NIX世界。

  • 如何检测它们 - 不确定,您可以访问的文件属性

答案 1 :(得分:1)

我找到了一种方法来确定主机上的路径是文件还是PDS(类似于目录)。我使用了org.apache.hadoop.fs.ftp.FTPFileSystem库,并且通过返回文件列表可以使用以下代码段。

FTPFile[] files = ftp.listFiles(); 

循环浏览files并检查file1.isFile()就足够了。 再次记得在使用ftp.cwd(inputPath);

列出文件之前更改为当前工作目录

有关大型机文件系统的说明,请参阅Bruce Martin的回答和随后的评论。

答案 2 :(得分:0)

您没有说明您使用的是哪个版本的Java,或者您是否正在为主机文件系统使用特殊库。

您可以改用java.io.File#isDirectory()吗?