使用Java从远程服务器复制具有特定扩展名的所有文件

恶毒的

大家好,我正在尝试创建一个小脚本,该脚本可让我通过sftp将具有特定扩展名的所有文件从远程linux计算机复制到本地计算机。

这是我到目前为止的代码,如果我给出完整路径,则可以使用Jsch将一个文件从远程计算机复制到本地计算机。

package transfer;

import com.jcraft.jsch.*;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Scanner;

public class CopyFromServer {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Please enter the hostname or ip of the server on which the ctk files can be found: ");
        String hostname = sc.nextLine();
        System.out.println("Please enter your username: ");
        String username = sc.nextLine();
        System.out.println("Please enter your password: ");
        String password = sc.nextLine();
        System.out.println("Please enter the location where your files can be found: ");
        String copyFrom = sc.nextLine();
        System.out.println("Please enter the location where you want to place your files: ");
        String copyTo = sc.nextLine();

        JSch jsch = new JSch();
        Session session = null;
        try {
            session = jsch.getSession(username, hostname, 22);
            session.setConfig("StrictHostKeyChecking", "no");
            session.setPassword(password);
            session.connect();

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

            sftpChannel.get(copyFrom, copyTo);
            sftpChannel.exit();
            session.disconnect();
        } catch (JSchException e) {
            e.printStackTrace();  
        } catch (SftpException e) {
            e.printStackTrace();
        }
    }
}

我希望将特定文件夹中具有扩展名“ .jpg”的所有文件复制并放置在用户定义的文件夹中。

我试过了:

sftpChannel.get(copyFrom + "*.jpg", copyTo);

哪个没有用,我知道我应该使用类似的东西:

pathname.getName().endsWith("." + fileType)

但是我不确定如何用sftpChannel实现它。

西瓦

您必须使用sftpChannel.ls("Path to dir");它将返回给定路径中的文件列表作为矢量的方法,并且必须迭代矢量以下载每个文件sftpChannel.get();

Vector<ChannelSftp.LsEntry> list = sftpChannel .ls("."); 
    // iterate through objects in list, and check for extension
    for (ChannelSftp.LsEntry listEntry : list) {
            sftpChannel.get(listEntry.getFilename(), "fileName"); 

        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

WinSCP递归查找具有特定扩展名的所有文件,并将其上传到FTP服务器

如何使用Python递归复制目录中具有特定扩展名的所有文件?

如何仅从FTP服务器下载具有特定扩展名的文件?

从所有子目录复制具有特定扩展名的所有文件

使用rsync复制除具有特定扩展名的某些文件名以外的所有文件

复制所有具有特定扩展名的文件,同时维护目录树

获取具有特定扩展名的所有文件

从多个目录复制具有特定扩展名的文件

从服务器下载没有扩展名的文件

如何使用package.json脚本复制具有特定文件扩展名的文件

使用scp复制具有某些扩展名的文件

使用glob python读取目录中具有特定扩展名的所有文件

将具有特定扩展名的所有文件复制到另一个目录,同时更改扩展名

使用 grep 移动具有特定扩展名的文件

使用Chokidar监视具有特定扩展名的文件

复制包含具有给定扩展名的文件的所有文件夹

如何扫描所有驱动器以查找Java中的特定文件扩展名?

显示所有具有特定扩展名的文件的文件名

如何删除特定文件夹中具有特定扩展名的所有文件?

如何使用Shell脚本从特定目录创建指向具有特定扩展名的所有文件的符号链接?

如何将所有具有特定扩展名的文件移动到特定目录?

如何删除文件夹中所有具有特定扩展名的文件?

Powershell删除具有特定文件扩展名的所有文件

从脚本中的特定文件类型扩展名复制所有文件

从脚本中的特定文件类型扩展名复制所有文件

复制具有多个扩展名的文件

Delphi仅复制具有某些扩展名的文件

如何在Windows 8中删除具有特定扩展名的所有文件?

递归地显示具有特定扩展名的所有文件