我有一个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
如何确定源路径是文件还是文件夹?
答案 0 :(得分:2)
我没有答案,但听起来你正在接受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()吗?