java.io.FileNotFoundException:C:\Users\admin\Desktop\abcd(访问被拒绝)

java.io.FileNotFoundException:C:\Users\admin\Desktop\abcd(访问被拒绝),java,ssh,jsch,Java,Ssh,Jsch,我正在尝试将目录传输到sftp远程服务器 import java.io.File; import java.io.FileInputStream; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class FolderTransfer { public Fold

我正在尝试将目录传输到sftp远程服务器

import java.io.File;
import java.io.FileInputStream;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class FolderTransfer {

    public FolderTransfer() {
    }

    public static void main(String[] args) {
        String SFTPHOST = "hostname";
        int SFTPPORT = 22;
        String SFTPUSER = "admin";
        String SFTPPASS = "password";
        String SFTPWORKINGDIR = "/cygdrive/c/Users/admin";

        Session session = null;
        Channel channel = null;
        ChannelSftp channelSftp = null;

        try {
            JSch jsch = new JSch();
            session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT);
            session.setPassword(SFTPPASS);
            java.util.Properties config = new java.util.Properties();
            config.put("StrictHostKeyChecking", "no");
            session.setConfig(config);
            session.connect();
            channel = session.openChannel("sftp");
            channel.connect();
            channelSftp = (ChannelSftp) channel;
            channelSftp.cd(SFTPWORKINGDIR);
            File f = new File("C:\\Users\\admin\\Desktop\\abcd\\");
            channelSftp.put(new FileInputStream(f), f.getName());
            System.out.println("done....");
        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }

}
但我得到的错误是 java.io.FileNotFoundException:C:\Users\admin\Desktop\abcd(访问被拒绝)
如何解决这个问题?

abcd不是一个文件,而是一个目录。压缩目录并作为文件发送,或者获取所有文件并逐个发送

File folder = new File("your/path");
File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) {
  if (listOfFiles[i].isFile()) {
    System.out.println("File " + listOfFiles[i].getName());
  } else if (listOfFiles[i].isDirectory()) {
    System.out.println("Directory " + listOfFiles[i].getName());
  }
}
File folder=新文件(“您的/path”);
File[]listOfFiles=folder.listFiles();
for(int i=0;i
可能的重复项您无法使用FileInputStream打开文件夹。abcd是一个目录而不是文件。@danyal:是的,但我需要将整个文件夹传输到服务器…压缩文件夹并传输..或者迭代文件并逐个发送。。