`
- 浏览:
41616 次
- 性别:
- 来自:
苏州
-
- 原载:http://blog.csdn.net/haidage/article/details/6859716
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.LineNumberReader;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Properties;
-
- import com.jcraft.jsch.Channel;
- import com.jcraft.jsch.ChannelSftp;
- import com.jcraft.jsch.JSch;
- import com.jcraft.jsch.Session;
- import com.jcraft.jsch.SftpException;
-
- public class SFTPUtil {
-
- private String host = "127.0.0.1";
- private String username="MingMac";
- private String password="×××";
- private int port = 22;
- private ChannelSftp sftp = null;
- private String localPath = "/var/test";
- private String remotePath = "/var/tset";
- private String fileListPath = "/var/test/java/test.txt";
- private final String seperator = "/";
-
-
-
-
- public void connect() {
- try {
- if(sftp != null){
- System.out.println("sftp is not null");
- }
- JSch jsch = new JSch();
- jsch.getSession(username, host, port);
- Session sshSession = jsch.getSession(username, host, port);
- System.out.println("Session created.");
- sshSession.setPassword(password);
- Properties sshConfig = new Properties();
- sshConfig.put("StrictHostKeyChecking", "no");
- sshSession.setConfig(sshConfig);
- sshSession.connect();
- System.out.println("Session connected.");
- System.out.println("Opening Channel.");
- Channel channel = sshSession.openChannel("sftp");
- channel.connect();
- sftp = (ChannelSftp) channel;
- System.out.println("Connected to " + host + ".");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-
-
- public void disconnect() {
- if(this.sftp != null){
- if(this.sftp.isConnected()){
- this.sftp.disconnect();
- }else if(this.sftp.isClosed()){
- System.out.println("sftp is closed already");
- }
- }
-
- }
-
- public void download() {
-
-
-
- }
-
-
- private void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp) {
- try {
- sftp.cd(directory);
- File file = new File(saveFile);
- sftp.get(downloadFile, new FileOutputStream(file));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-
-
-
- public void upload() {
- List<String> fileList = this.getFileEntryList(fileListPath);
- try {
- if(fileList != null){
- for (String filepath : fileList) {
- String localFile = this.localPath + this.seperator+ filepath;
- File file = new File(localFile);
-
- if(file.isFile()){
- System.out.println("localFile : " + file.getAbsolutePath());
- String remoteFile = this.remotePath + this.seperator + filepath;
- System.out.println("remotePath:" + remoteFile);
- File rfile = new File(remoteFile);
- String rpath = rfile.getParent();
- try {
- createDir(rpath, sftp);
- } catch (Exception e) {
- System.out.println("*******create path failed" + rpath);
- }
-
- this.sftp.put(new FileInputStream(file), file.getName());
- System.out.println("=========upload down for " + localFile);
- }
- }
- }
- } catch (FileNotFoundException e) {
-
- e.printStackTrace();
- } catch (SftpException e) {
-
- e.printStackTrace();
- }
-
- }
-
-
-
-
-
- private void createDir(String filepath, ChannelSftp sftp){
- boolean bcreated = false;
- boolean bparent = false;
- File file = new File(filepath);
- String ppath = file.getParent();
- try {
- this.sftp.cd(ppath);
- bparent = true;
- } catch (SftpException e1) {
- bparent = false;
- }
- try {
- if(bparent){
- try {
- this.sftp.cd(filepath);
- bcreated = true;
- } catch (Exception e) {
- bcreated = false;
- }
- if(!bcreated){
- this.sftp.mkdir(filepath);
- bcreated = true;
- }
- return;
- }else{
- createDir(ppath,sftp);
- this.sftp.cd(ppath);
- this.sftp.mkdir(filepath);
- }
- } catch (SftpException e) {
- System.out.println("mkdir failed :" + filepath);
- e.printStackTrace();
- }
-
- try {
- this.sftp.cd(filepath);
- } catch (SftpException e) {
- e.printStackTrace();
- System.out.println("can not cd into :" + filepath);
- }
-
- }
-
-
-
-
-
- private List<String> getFileEntryList(String file){
- ArrayList<String> fileList = new ArrayList<String>();
- InputStream in = null;
- try {
-
- in = new FileInputStream(file);
- InputStreamReader inreader = new InputStreamReader(in);
-
- LineNumberReader linreader = new LineNumberReader(inreader);
- String filepath = linreader.readLine();
- while(filepath != null){
- fileList.add(filepath);
- filepath = linreader.readLine();
- }
- in.close();
- } catch (FileNotFoundException e) {
-
- e.printStackTrace();
- } catch (IOException e) {
-
- e.printStackTrace();
- }finally{
- if(in != null){
- in = null;
- }
- }
-
- return fileList;
- }
-
-
-
-
- public String getHost() {
- return host;
- }
-
-
-
-
- public void setHost(String host) {
- this.host = host;
- }
-
-
-
-
- public String getUsername() {
- return username;
- }
-
-
-
-
- public void setUsername(String username) {
- this.username = username;
- }
-
-
-
-
- public String getPassword() {
- return password;
- }
-
-
-
-
- public void setPassword(String password) {
- this.password = password;
- }
-
-
-
-
- public int getPort() {
- return port;
- }
-
-
-
-
- public void setPort(int port) {
- this.port = port;
- }
-
-
-
-
- public ChannelSftp getSftp() {
- return sftp;
- }
-
-
-
-
- public void setSftp(ChannelSftp sftp) {
- this.sftp = sftp;
- }
-
-
-
-
- public String getLocalPath() {
- return localPath;
- }
-
-
-
-
- public void setLocalPath(String localPath) {
- this.localPath = localPath;
- }
-
-
-
-
- public String getRemotePath() {
- return remotePath;
- }
-
-
-
-
- public void setRemotePath(String remotePath) {
- this.remotePath = remotePath;
- }
-
-
-
-
- public String getFileListPath() {
- return fileListPath;
- }
-
-
-
-
- public void setFileListPath(String fileListPath) {
- this.fileListPath = fileListPath;
- }
-
- public static void main(String[] args) {
-
- SFTPUtil ftp= new SFTPUtil();
- ftp.connect();
- ftp.upload();
- ftp.disconnect();
- System.exit(0);
- }
-
-
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
本文将详细讲解如何使用开源库JSch来实现在Java中进行SFTP的上传、下载以及删除文件的方法。 JSch是一个纯Java实现的SSH2库,它提供了对SFTP的支持,允许我们在Java应用中安全地执行文件传输。首先,我们需要添加...
在本篇文章中,我们将详细介绍JAVA SFTP文件上传、下载及批量下载的实例,包括相关的概念、API介绍、代码实现等方面的内容。 首先,我们需要了解什么是SFTP?SFTP(Secure File Transfer Protocol)是一种安全的...
本文将详细讲解如何使用Java实现SFTP的上传、下载以及相关的批量操作、远程目录创建和文件删除功能。 首先,我们需要一个支持SFTP的Java库,例如JSch(Java Secure Channel)。JSch是一个开放源码的Java库,它实现...
JSch 实现 SFTP 核心类,它包含了所有 SFTP 的方法,如:put():文件上传、get():文件下载、cd():进入指定目录、ls():得到指定目录下的文件列表、rename():重命名指定文件或目录、rm():删除指定文件、mkdir():...
本篇文章将详细探讨如何使用Java通过SFTP模式实现FTP的文件上传、下载和删除功能。 一、SFTP简介 SFTP与传统的FTP不同,FTP在明文传输数据,存在安全隐患,而SFTP则利用SSH提供的加密机制,确保数据在传输过程中的...
JSch是一个纯Java实现的SSH2库,允许开发人员连接到支持SFTP的服务器,进行文件的上传、下载以及执行其他相关操作。本文将详细介绍如何使用JSch进行SFTP操作,并提供一个简单的`SftpUtil`工具类示例。 首先,我们...
资源内容:Java实现Sftp中文件的操作,如目录或文件创建及删除,拉取文件,上传文件。可以直接拿来使用。
Java SFTP上传涉及的技术栈主要围绕Java Secure Channel (JSch) 库,Java Cryptography Extension (JCE) 政策,以及PuTTY工具。这些组件在实现安全的文件传输协议(SFTP)时扮演着关键角色。 首先,让我们深入了解每...
这篇内容将详细介绍如何使用Java实现FTP和SFTP的文件上传与下载,并涉及相关的Apache库。 FTP是一种基于TCP的服务,主要用于在互联网上进行文件传输。Java中可以使用Apache Commons Net库来实现FTP操作。首先,需要...
5. **文件操作**:SFTP会话对象是一个`ChannelSftp`实例,提供了丰富的API进行文件操作,如`cd`改变目录,`ls`列出目录,`put`上传文件,`get`下载文件,`rm`删除文件,`mkdir`创建目录,`chmod`改变文件权限等。...
通过JSch,我们可以实现连接到远程服务器,创建、上传、下载、删除文件,以及列出目录等操作。 下面是一些使用JSch实现SFTP的关键知识点: 1. **连接设置**:首先,我们需要配置远程服务器的主机名、端口、用户名...
本文将深入探讨如何使用Java实现SFTP功能,以及提供的源码下载。 Java作为一种广泛使用的编程语言,拥有丰富的库来支持各种网络协议,包括SFTP。在Java中实现SFTP,我们通常会使用JSch库,这是一个开源的Java SSH2...
sftp常用方法汇总,支持流上传,文件上传,下载,删除各类方法,使用时候秩序new SFtpUtils(),压入对应的sftp连接参数即可调用相应参数。
在本案例中,我们将关注如何利用JSch库来实现SFTP文件的上传、下载和删除功能。 **SFTP基础** SFTP是基于SSH协议的文件传输协议,它提供了安全的数据传输,确保了文件传输过程中的数据完整性。与FTP不同,SFTP在...
除了基本的上传和下载,JSch还支持其他SFTP操作,如列出目录内容(`ls()`),改变当前工作目录(`cd()`),重命名文件(`rename()`),以及删除文件或目录(`rm()`和`rmdir()`)等。 在完成所有文件操作后,记得关闭...
Java SFTP工具可以帮助开发者实现这一功能,通常包括连接到SFTP服务器、列出目录、上传下载文件、管理文件权限等功能。 在描述中提到的“博文链接:https://messon619.iteye.com/blog/922052”,这可能是一个关于...
JSch是一个纯Java实现的SSH2库,它允许用户连接到SFTP服务器,进行文件传输、创建目录、删除文件等操作。首先,我们需要在项目中引入JSch库,然后创建一个`Session`对象,设置用户名、密码或密钥对,并连接到SFTP...
总的来说,Java实现文件上传下载工具涉及网络编程、I/O流、字符编码等多个方面,开发者需要理解各种协议的工作原理,并合理选择和使用合适的库来简化开发过程。对于复杂的项目,可能还需要考虑到性能优化、安全性...
本篇文章将深入探讨如何使用Java来实现对Linux服务器的文件上传、操作、下载和删除,以及如何借助ganymed-ssh2库实现远程操作。 首先,让我们了解基础概念。Linux服务器是一种基于Linux操作系统并提供网络服务的...