Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在检查大型机FTP服务器上的路径是否为文件或文件夹。_Java_File_Filesystems_Mainframe - Fatal编程技术网

Java 正在检查大型机FTP服务器上的路径是否为文件或文件夹。

Java 正在检查大型机FTP服务器上的路径是否为文件或文件夹。,java,file,filesystems,mainframe,Java,File,Filesystems,Mainframe,我有一个Java代码,可以将文件从大型机上的FTP传输到本地系统。问题是如何判断给定路径是文件还是文件夹?我不能使用扩展检查,因为我不知道可能的扩展是什么。此外,以下代码始终返回false fileSystem.isFile("fileName"); 作为一个大型机文件系统,路径由而不是分隔,因此在最后检查也不起作用 同样,我使用 url="connection url of the mainframe" bufferedInputStream = new BufferedInputStre

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

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

您不能说您使用的是什么版本的java,或者您是否为主机文件系统使用了特殊的库


你能用它来代替吗?

我没有答案,但听起来你在接近Zos。对于那些没有 知道佐斯的事吗

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

  • 您如何检测它们?不确定,您可能可以访问某个文件属性


我找到了一种方法来确定大型机上的路径是文件还是PDS(类似于目录)。我使用了
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文件的,它总是提醒我在大型机上是如何使用加载库的——这是旧的东西又变成了新的东西的另一种情况