免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

sftp的java代碼,java讀取sftp文件

如何使用java的ChannelSftp刪除一個文件夾下的所有文件?

public class CopyFile {

創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為尖山企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、做網(wǎng)站尖山網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

public static void main(String[] args) throws IOException {

FileInputStream readFis=new FileInputStream("d:/1.txt");

FileChannel readFc=readFis.getChannel();

ByteBuffer bb=ByteBuffer.allocate(1024);

readFc.read(bb);

FileOutputStream writeFis=new FileOutputStream("d:/2.txt");

FileChannel writeFs=writeFis.getChannel();

writeFs.write((ByteBuffer) bb.flip());

}

}

僅20行代碼,實現(xiàn)文件自動化上傳至sftp

最近接到一個產(chǎn)品需求是給指定的 sftp 服務(wù)器的指定目錄定時推送文件數(shù)據(jù)。

因為項目組已有現(xiàn)成的組件可以輕松實現(xiàn) sftp 服務(wù)器文件的快速上傳,本來是一件很容易的事情,但是問題出現(xiàn)在這個指定的 sftp 服務(wù)器所指定的密碼帶有系統(tǒng)關(guān)鍵字和一些特殊字符,導(dǎo)致現(xiàn)在的組件在解析過程中會失敗。

因此重新開發(fā)了下面的這套腳本來滿足這個特殊的需求。

Python代碼

sftp配置文件代碼

(1). yaml 模塊

導(dǎo)入 yaml 模塊前可以使用以下命令進行模塊的安裝

yaml 模塊在這里的作用是讀取 sftp 配置文件代碼,將指定key: test_file_upload 下的 key:value 的值轉(zhuǎn)換為字典。

例如:load_config_from_param_conf 函數(shù)中的返回值就是使用 yaml 讀取到 sftp 配置文件代碼后,返回 key: test_file_upload 下配置選項值。

格式如下:

最后將返回值傳給 upload 函數(shù)作為參數(shù)。

(2). OptionParser 模塊

按照 yaml 模塊的安裝方法,先安裝 optparse 模塊后,然后在文件中從optparse 中導(dǎo)入 OptionParser 模塊

在這里我使用了 OptionParser 這個類實例化了一個對象:opt_parser,通過對象來調(diào)用 add_option 方法添加了2個參數(shù),分別是:node, local_file

1). 形參:--node,實參:node

所代表的業(yè)務(wù)含義是:指定要上傳的 sftp 的節(jié)點,具體參數(shù)值對應(yīng) sftp配置文件代碼中的 test_file_upload

2). 形參:--local_file,實參:local_file

所代表的業(yè)務(wù)含義是:指定本地需要被上傳到 sftp 服務(wù)器的具體文件路徑

3). 調(diào)用命令

4). add_option()方法

參數(shù):action的枚舉

store: 參數(shù)列表中帶有--node, 那么就會將下一個元素即:test_file_upload 作為其 dest 實參 node 的值; 如果沒有--node,那么對應(yīng)的node的值就為 None;

store_true: 參數(shù)列表中有--local_file, 那么其 dest 實參 local_file 的值就為 True; 否者就為 default 定義的默認值,這里沒有給定 default 的默認值;

store_false: 參數(shù)列表中有--local_file, 那么其 dest 實參 local_file 的值就為 False; 否者就為 default 定義的默認值,這里沒有給定 default 的默認值;

參數(shù):type

type是指定傳入?yún)?shù)的類型,這里的參數(shù)類型為 string 類型。

參數(shù):dest

dest是參數(shù)傳入后由哪個變量來存儲的,后面代碼對該參數(shù)的引用也是使用這里定義的變量名來引用的。

參數(shù):default

default 是與 action 的值結(jié)合使用的。

參數(shù):help

help相當(dāng)于幫助說明文檔,用于描述這個參數(shù)的含義。

java 怎么讀取sftp上的文件

1.依賴的jar文件 jsch-0.1.53.jar

2.登錄方式有密碼登錄,和密匙登錄

代碼:

import java.util.Properties;

import com.cloudpower.util.Login;

import com.util.LoadProperties;

public class Ftp {

public static void main(String[] args) {

Properties properties = LoadProperties.getProperties();

Login.login(properties);

}

}

java實現(xiàn)sftp功能,linux上可以,solaris異常

狀態(tài)集合I的a弧轉(zhuǎn)換,表示為move(I,a)定義為狀態(tài)集合J,其中J是所有那些可從I的某一狀態(tài)經(jīng)過一條a弧而到達的狀態(tài)的全體。

定義Ia = ε-closure(move(I,a))

sftp免密用java怎么調(diào)用

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import java.util.Properties;

import java.util.Vector;

import org.apache.commons.lang.ArrayUtils;

import com.huawei.bme.commons.om.log.DebugLog;

import com.huawei.bme.commons.om.log.LogFactory;

import com.huawei.icity.commons.constants.KeyConstant;

import com.huawei.icity.commons.constants.NumberConstant;

import com.huawei.icity.commons.exception.SPMException;

import com.huawei.icity.commons.log.IcityLogFactory;

import com.huawei.icity.commons.log.IcityRuntimeLog;

import com.huawei.icity.commons.sysconfig.StaticInitData;

import com.huawei.icity.commons.utils.StringTools;

import com.huawei.icity.omp.common.util.CommonTools;

import com.huawei.icity.omp.interfaces.hint.constant.TimetaskConstants;

import com.huawei.mdmc.bfm.cms.assist.common.domain.SingleTableModel;

import com.jcraft.jsch.Channel;

import com.jcraft.jsch.ChannelSftp;

import com.jcraft.jsch.ChannelS;

import com.jcraft.jsch.JSch;

import com.jcraft.jsch.JSchException;

import com.jcraft.jsch.Session;

import com.jcraft.jsch.SftpException;

/**

* SFTP公共處理類 〈提供SFTP文件上傳,下載,獲取指定目錄 下文件名集合, 獲取指定目錄 下文件集合等方法

*

* @author mKF75022

* @version iCity Manager V100R002 2012-7-3

* @since iCity Manager V100R002C01

*/

public class SFTPTool

{

/**

* 調(diào)測日志記錄器。

*/

private static final DebugLog DEBUGGER = LogFactory.getDebugLog(SFTPTool.class);

/**

* 運行日志記錄器。

*/

private static final IcityRuntimeLog RUNTIMELOGGER = IcityLogFactory

.getRuntimeLog(SFTPTool.class);

/**

* Sftp客戶端對象

*/

private ChannelSftp sftp = null;

/**

* SFTP IP地址

*/

private String ip;

/**

* SFTP 端口

*/

private String port;

/**

* SFTP 用戶名

*/

private String userName;

/**

* SFTP 密碼

*/

private String password;

/**

* SFTP上傳模式:BINARY

*/

// private static final int BINARY_FILE_TYPE = 2;

/**

*

* 獲取實例

*

* @return SFTPTool newinstance實例

*

*/

public static SFTPTool getNewInstance()

{

return new SFTPTool();

}

/**

* 初始化連接參數(shù)

*

* @param sftpIP

* IP

* @param sftpPort

* 端口

* @param sftpUsername

* 用戶名

* @param sftpPassword

* 密碼

*/

public void init(String sftpIP, String sftpPort, String sftpUsername, String sftpPassword)

{

// 獲取SFTP連接信息

this.ip = sftpIP;

this.port = sftpPort;

this.userName = sftpUsername;

this.password = sftpPassword;

}

/**

* 從SFTP將符合約定命名的文件都下載到本地 .

*

* @param sftpDir

* SFTP服務(wù)器文件存放路徑

* @param locDir

* 本地文件存放路徑

* @param regex

* 指定文件名的格式

* @param needBackup

* 是否需要文件備份(true:是;false:否)

* @param needFullMatch

* 是否要求全局匹配(true:是;false:否)

* @param deleteFtpFile

* the delete ftp file

* @return 下載到本地的文件列表

*/

public ListFile synSFTPFileToLocal(String sftpDir, String locDir, String regex,

boolean needBackup, boolean needFullMatch, boolean deleteFtpFile)

{

ListFile files = new ArrayListFile(KeyConstant.INITIAL_NUMBER);

try

{

this.connect(ip, Integer.parseInt(this.port), userName, password);

// 獲得FTP上文件名稱列表

ListString ftpFileNameList = this.listFiles(sftpDir, regex, needFullMatch);

File localFile = null;

int size = ftpFileNameList.size();

// 根據(jù)每個FTP文件名稱創(chuàng)建本地文件。

for (int i = 0; i size; i++)

{

// 下載源文件

localFile = this.download(sftpDir, locDir, ftpFileNameList.get(i), deleteFtpFile);

if (localFile.exists())

{

files.add(localFile);

}

if (needBackup)

{

// 備份源文件生成默認備份文件路徑(據(jù)請求文件路徑,生成同級目錄的備份文件夾絕對路徑)

String parentDir = sftpDir.substring(NumberConstant.INT_0,

sftpDir.lastIndexOf("/") + 1);

String backupDir = parentDir + TimetaskConstants.DEFAULT_BACKUP_DIRNAME;

boolean bakExists = openDir(backupDir);

if (bakExists)

{

this.uploadFile(backupDir, localFile);

}

else

{

boolean parentExists = openDir(parentDir);

if (parentExists)

{

s;

this.uploadFile(backupDir, localFile);

}

else

{

DEBUGGER.error("sftp parentDir no exisits ");

}

}

}

}

}

catch (Exception e)

{

DEBUGGER.error("synSFTPFileToLocal Exception", e);

}

finally

{

this.disconnect();

}

return files;

}

/**

* 連接sftp服務(wù)器

*

* @param sftpip

* ip地址

* @param sftpport

* 端口

* @param sftpusername

* 用戶名

* @param sftppassword

* 密碼

* @return channelSftp

* @throws SPMException

*/

public ChannelSftp connect(String sftpip, int sftpport, String sftpusername, String sftppassword)

{

sftp = new ChannelSftp();

try

{

JSch jsch = new JSch();

jsch.getSession(sftpusername, sftpip, sftpport);

Session sshSession = jsch.getSession(sftpusername, sftpip, sftpport);

RUNTIMELOGGER.info("Session created");

sshSession.setPassword(sftppassword);

Properties sshConfig = new Properties();

sshConfig.put("StrictHostKeyChecking", "no");

sshSession.setConfig(sshConfig);

// 設(shè)置超時時間為

sshSession.setTimeout(Integer.parseInt(StaticInitData.getFtpConnectTimeOut())

* NumberConstant.INT_1000);

sshSession.connect();

Channel channel = sshSession.openChannel("sftp");

channel.connect();

sftp = (ChannelSftp) channel;

// 設(shè)置文件類型

// ftpClient.setFileType(BINARY_FILE_TYPE);

// 與防火墻相關(guān)

// ftpClient.enterLocalPassiveMode();

}

catch (JSchException e)

{

DEBUGGER.error("JSchException : {}", e);

}

return sftp;

}

// /**

// * 創(chuàng)建指定文件夾

// *

// * @param dirName

// * dirName

// */

// public void mkDir(String dirName)

// {

// try

// {

// s;

// }

// catch (SftpException e)

// {

// DEBUGGER.error("mkDir Exception : " + e);

// }

// }

/**

* 創(chuàng)建指定文件夾

*

* @param dirName

* dirName

*/

public void mkDir(String dirName)

{

String[] dirs = dirName.split("/");

try

{

String now = s;

for (int i = 0; i dirs.length; i++)

{

boolean dirExists = openDir(dirs[i]);

if (!dirExists)

{

s(dirs[i]);

s(dirs[i]);

}

}

s;

}

catch (SftpException e)

{

DEBUGGER.error("mkDir Exception : " + e);

}

}

/**

* 打開指定目錄

*

* @param directory

* directory

* @return 是否打開目錄

*/

public boolean openDir(String directory)

{

try

{

s;

return true;

}

catch (SftpException e)

{

DEBUGGER.error("openDir Exception : " + e);

return false;

}

}

java FTP下載文件在代碼中如何實現(xiàn)知道下載完成?

public?static?void?downloadFileFtp(KmConfig?kmConfig,String?fileName,?String?clientFileName,?OutputStream?outputStream){

try?{

String?ftpHost?=?kmConfig.getFtpHost();

int?port?=?kmConfig.getFtpPort();

String?userName?=?kmConfig.getFtpUser();

String?passWord?=?kmConfig.getFtpPassword();

String?path?=?kmConfig.getFtpPath();

FtpClient?ftpClient?=?new?FtpClient(ftpHost,?port);//?ftpHost為FTP服務(wù)器的IP地址,port為FTP服務(wù)器的登陸端口,ftpHost為String型,port為int型。

ftpClient.login(userName,?passWord);//?userName、passWord分別為FTP服務(wù)器的登陸用戶名和密碼

ftpClient.binary();

ftpClient.cd(path);//?path為FTP服務(wù)器上保存上傳文件的路徑。

try?{

TelnetInputStream?in?=?ftpClient.get(fileName);

byte[]?bytes?=?new?byte[1024];

int?cnt=0;

while?((cnt=in.read(bytes,0,bytes.length))?!=?-1)?{

outputStream.write(bytes,?0,?cnt);

}

//##############################################

//這里文件就已經(jīng)下載完了,自己理解一下

//#############################################

outputStream.close();

in.close();

}?catch?(Exception?e)?{

ftpClient.closeServer();

e.printStackTrace();

}

ftpClient.closeServer();

}?catch?(Exception?e)?{

System.out.println("下載文件失敗!請檢查系統(tǒng)FTP設(shè)置,并確認FTP服務(wù)啟動");

}

}

文章名稱:sftp的java代碼,java讀取sftp文件
鏈接分享:http://m.newbst.com/article30/hseipo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)頁設(shè)計公司電子商務(wù)、動態(tài)網(wǎng)站全網(wǎng)營銷推廣、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司