检查是否使用Java的FTP上mainfame存在的数据集

问题描述 投票:1回答:2

有没有人使用的ftp.changeWorkingDirectory命令大型机数据集。当有一个数据集此命令返回true。当没有数据集也将返回true。如果您有任何您用来处理大型数据集,你可以分享任何样本Java的FTP代码。这里是我有一个不工作的代码。

public static FTPFile[] GetListOfMembersFromPDS(String pdsname, String serverN) {

FTPSClient ftp = FTPConnect(serverN);

FTPFile[] files = null;

boolean success = false;

try {
success = ftp.changeWorkingDirectory(pdsname);

if (!success) {

throw new IOException("Unable to change working directory to " + pdsname
+ " for ftp transfer with ftp client = " + ftp + ". " + ftp.getReplyString());

}

} catch (IOException e) {

e.printStackTrace();`enter code here`

}

System.out.println(success);

try {

files = ftp.listFiles();

} catch (IOException e) {

e.printStackTrace();

}

return files;
} 
java ftp mainframe
2个回答
1
投票

改变工作目录中的z / OS数据集环境一般会返回true,除非你指定一个限定词太长,或全名太长。这并不表示工作目录的存在与否,作为大型数据集不上的目录结构的工作。

如果更改为一个尚不存在的“工作目录”,你会得到这样的回应:

250 “THIS.IS.THE.WORKING.DIRECTOR。”是工作目录名的前缀。

如果您使用的名称是无效的尝试,你会得到错误的。

501“THIS.IS.THE.WORKING.DIRECTORY” A限定符是超过8个字符

如果你是名过长的尝试,你会得到错误的。

501无效的目录名 - 太大。

所以,依靠从changeWorking Directory中的布尔将无法正常工作。你需要看看回复字符串与“getReplyString()”方法,然后分析它。

一个LOADLIB PDS会说像250的工作目录可能是一个加载库250的工作目录“GAME.LOADLIB”是一个分区数据集

非LOADLIB PDS只想说

250工作目录“GAME.COBOL”是一个分区数据集。

listFiles,listDirectories和ListNames有不同的行为了。

我有一些数据集,其是GAME.SRCE,GAME.COPYLIB,GAME.LOADLIB和GAME.LOADLIB.PDSE的。他们都是分区的数据集。如果更改目录游戏,做listNames(),你得到所有4.如果listFiles或listDirectories,你只能得到COPYLIB和SRCE。如果更改目录GAME.SRCE,那么所有三种方法将列出所有成员。如果更改目录GAME.LOADLIB,那么只有listNames将列出成员。你也不知道GAME.LOADLIB.PDSE存在。

这是使用Apache的共享,公共净3.6.jar和z / OS完成。


0
投票

这里有一个简单的例子,我发现通过搜索。你应该看到成功= false如果该目录不能更改:

    // Change working directory
    success = ftp.changeWorkingDirectory(pdsname);
    String[] replies = ftp.getReplyStrings();
    if (replies != null && replies.length > 0) {
        for (String aReply : replies) {
            System.out.println("SERVER: " + aReply);
        }
    }
    if (success) {
        System.out.println("Successfully changed working directory.");
    } else {
        System.out.println("Failed to change working directory to " + pdsname + ". See server's reply.");
    }
© www.soinside.com 2019 - 2024. All rights reserved.