如何在sftp服务器中创建文件,并且还需要将该文件的权限更改为511

时间:2018-08-24 11:25:29

标签: java sftp

我尝试使用此代码:

SshParameters参数=新的SshParameters(ftpHostname,ftpUsername,ftpPassword);         SftpConfiguration config = SftpConfiguration.defaultConfiguration();

    // create Sftp instance
    Sftp sftp = new Sftp(params,config);

    // capture FTP related events
    sftp.addSftpListener(new DeliverySftpListener());

    // establish secure FTP connection
    sftp.connect();

字符串serverFileName =“ FileInServer.txt”;

    sftp.upload("src/test/java/com/filecreation/testfile/"+fileName+".txt",serverFileName);


    Session session = null;

    JSch jsch=new JSch();        

    Properties configone = new Properties();
    configone.put("StrictHostKeyChecking", "no");
    configone.put("PreferredAuthentications",password);
    JSch.setConfig(configone);

    session=jsch.getSession("uname", "hostname", port);

    ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");

    if (!channel.isConnected()) 
    channel.connect(5000);
    channel.chmod(511,"/home/abc/FileInServer.txt");
    channel.disconnect();
    session.disconnect();

...

我收到以下异常: com.jcraft.jsch.JSchException:会话已关闭     在com.jcraft.jsch.Session.openChannel(Session.java:861)     在com.visa.apps.comms.delivery.ftp.FileCreation.getListing(FileCreation.java:229)     在com.visa.apps.comms.delivery.ftp.FileCreation.main(FileCreation.java:44)

1 个答案:

答案 0 :(得分:1)

您可能忘记了连接到服务器。至少您的代码段中没有会话连接。

作为草图,其工作方式类似于

Session session = jsch.getSession("uname", "hostname", port);
session.connect();

Channel channel=session.openChannel("sftp");
channel.connect();
ChannelSftp c=(ChannelSftp)channel;

看看JSch - Example - Sftp.java