我有一个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
如何确定源路径是文件还是文件夹?
我没有答案,但听起来你正在访问Zos。对于那些不这样做的人
- Zos 没有目录
-
他所说的目录可能是PDS(参见数据集中的PDS)。对于那些没有大型机背景的人来说,把它看作是一种归档(即jar, Tar, zip等)。这不是一个完全准确的描述,PDS有一些局限性& &;不使用jar文件,但jar文件是我能想到的最接近PC, *NIX世界的类比。
-
你如何检测它们-不确定,可能有一个文件属性你可以访问
我找到了一种方法来确定主机上的路径是文件还是PDS(类似于目录)。我使用了org.apache.hadoop.fs.ftp.FTPFileSystem
库,下面的代码片段可以通过返回文件列表来工作。
FTPFile[] files = ftp.listFiles();
循环files
并检查file1.isFile()
就足够了。再次记住,在使用ftp.cwd(inputPath);
关于大型机文件系统的解释请参考Bruce Martin的回答和后面的评论
你不能说你使用的是什么版本的java,或者你是否为主机文件系统使用了一个特殊的库。
可以用java.io.File#isDirectory()代替吗?