使用Java,Apache Common Net将文件FTP到大型机

时间:2010-12-31 11:24:41

标签: java file networking apache-commons mainframe

我正在尝试使用FTP将文件上传到大型机服务器。我的代码在

之下
FTPClient client = new FTPClient();  
InputStream in = null;  
FileInputStream fis = null;  
try {  
    client.connect("10.10.23.23");  
    client.login("user1", "pass123");  
    client.setFileType(FTPClient.BINARY_FILE_TYPE);  
    int reply ;  
    reply = client.getReplyCode();  

    System.out.println("Reply Code:"+reply);  

    if(FTPReply.isPositiveCompletion(reply)){            
        System.out.println("Positive reply");  
        String filename ="D:\\FILE.txt";  

        in = new FileInputStream(filename);  
        client.storeFile("FILE.TXT", in);  
        client.logout();  
        fis.close();        
    } else {  
        System.out.println("Negative reply");  
    }
} catch(final Throwable t){  
        t.printStackTrace();  
}

代码在client.storeFile("FILE.TXT", in);中被触及 我无法调试。请提出方法/解决方案。

4 个答案:

答案 0 :(得分:1)

首先,Lukas说fis是空的,但我还有其他一些问题。什么是FTPClient?它不是sun.net.ftp.FtpClient,因为该类没有store()方法。其他需要考虑的事情是登录大型机,在我工作的地方,你不仅可以在没有首次登录的情况下从大型机上获取文件。可以考虑更多的事情,但让我们从那里开始。

答案 1 :(得分:1)

在上传文件之前,您似乎没有更改到特定目录。有两种方法可以更改大型机上的目录。如果你需要上传到PDS,你可以在windows ftp客户端执行如下命令。

cd USERID.DATASET.PREFIX

如果您需要将文件上传到USS子系统,您将执行如下命令。

cd '/direone/dirtwo'

答案 2 :(得分:1)

您是否检查过user1是否具有ftp的访问权限?可以在非常精细的级别上授予这些权限,以便您可以列出文件并提交作业,但不能放置文件 它在你的SEND之后死亡的事实似乎可能是一个很好的候选人。我会打电话给你的RACF / ACF2 / Whatever-security-product人,并问他们。

答案 3 :(得分:0)

  1. 首先从文件名
  2. 中删除文件扩展名
  3. 在单引号
  4. 中修剪后包含结果文件名
  5. 现在将上面的字符串作为storeFile()方法的第一个参数