【问题标题】:Checking if path on Mainframe FTP server is a file or folder.检查大型机 FTP 服务器上的路径是否为文件或文件夹。
【发布时间】:2013-01-21 14:08:43
【问题描述】:

我有一个 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

如何判断源路径是文件还是文件夹?

【问题讨论】:

  • 实际上这可能不是一个重复的问题,无论是否准确。有两种大型机文件系统,“Unix 文件系统”和“经典文件系统”。前者的行为类似于“普通”Unix。后者没有目录。 FTP 启动任务中有一些语法糖,它使您看起来可以更改目录,但实际上您只是在修改用于子集您看到或创建的数据集的限定符。
  • 同意。 “大型机”标签阻止了重复问题。对于那些在服务器是 z/OS 的情况下使用 FTP 的人来说,这是一个严肃的问题。我已经投票重新开放它,我请求所有其他观看这个空间的大型机也投赞成票。
  • 感谢@cschneid 和@zarchasmpgmr..

标签: java file filesystems mainframe


【解决方案1】:

我没有答案,但听起来您正在访问 Zos。对于那些不 对佐斯一无所知

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

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

【讨论】:

  • z/OS 绝对确实 有目录。看看 z/OS Unix 系统服务。 FWIW、z/OS v1r2 及更高版本符合 Unix95 产品标准:opengroup.org/openbrand/register/ibm.htm。话虽如此,当您说“他所称的目录可能是 PDS [...]”时您是正确的,并且您的类比很好。
  • cschneid,是的,你是对的,我倾向于忘记 Unix 系统服务 - 从来没有使用过它们,也不太清楚 Clasic -MVS/ZOS 结构如何映射到 ZO 的 Unix 端。问题也很经典-MVS/ZOS。在一个侧面问题上,注意 java 是如何使用它的 jar 文件的,它总是让我想起大型机上如何使用负载库 - 另一个旧的又变成新的例子
【解决方案2】:

我找到了一种方法来确定大型机上的路径是文件还是 PDS(类比是目录)。我使用了 org.apache.hadoop.fs.ftp.FTPFileSystem 库,下面的 sn-p 将通过返回文件列表来工作。

FTPFile[] files = ftp.listFiles(); 

循环通过files 并检查file1.isFile() 就足够了。 再次记住在使用ftp.cwd(inputPath);列出文件之前切换到当前工作目录

有关大型机文件系统的说明,请参阅 Bruce Martin 的回答和后面的 cmets。 .

【讨论】:

    【解决方案3】:

    您没有说明您使用的是什么版本的 java,或者您是否使用了主机文件系统的特殊库。

    你能改用java.io.File#isDirectory()吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-28
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多