4

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

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

4

3 回答 3

2

我没有答案,但听起来你正在访问 Zos。对于那些对Zos一无所知的人

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

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

于 2013-01-18T05:18:51.683 回答
1

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

FTPFile[] files = ftp.listFiles(); 

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

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

于 2013-01-21T06:08:43.510 回答
0

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

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

于 2013-01-17T06:44:43.410 回答