java用ftp代碼 java操作ftp上的文件

java中怎么實(shí)現(xiàn)ftp服務(wù)器

學(xué)習(xí)了計(jì)算機(jī)網(wǎng)絡(luò)之后,利用java寫了一個(gè)ftp服務(wù)器。

創(chuàng)新互聯(lián)主營新樂網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),新樂h5重慶小程序開發(fā)搭建,新樂網(wǎng)站營銷推廣歡迎新樂等地區(qū)企業(yè)咨詢

一、實(shí)現(xiàn)的ftp命令

實(shí)現(xiàn)了基本的user,pass,list,port,quit,retr,cwd,stor等命令

二、以上命令所對(duì)應(yīng)的功能

對(duì)應(yīng)的功能是:下載,上傳,獲取服務(wù)器目錄,切換目錄等

三、用于測試的ftp客戶端:windows自帶的ftp客戶端

四、實(shí)現(xiàn)的思想

1、使用ServerSocket進(jìn)行監(jiān)聽,每個(gè)控制連接的請(qǐng)求到來之后,開啟一個(gè)線程進(jìn)行處理(這里使用的java bio,效率較差,對(duì)于控制連接最好使用NIO處理,之后會(huì)再寫個(gè)

nio的實(shí)現(xiàn))

2、 對(duì)于命令使用工廠方法模式進(jìn)行設(shè)計(jì),當(dāng)需要添加新的命令的時(shí)候,只需要添加一個(gè)新的命令類,實(shí)現(xiàn)相應(yīng)接口,修改工廠產(chǎn)生邏輯,而不用修改其他的程序代碼。可

擴(kuò)展性較好,同時(shí)符合開閉原則。

五、實(shí)現(xiàn)過程中碰到的問題

1、對(duì)于tcp與socket的關(guān)系理解錯(cuò)誤,以為所有的數(shù)據(jù)的輸入都是要經(jīng)過serverSocket().accept()方法。其實(shí),ServerSocket.accept()所對(duì)應(yīng)的是tcp里面的三次握手建

立連接的階段,之后的tcp的連接由客戶端和服務(wù)器端的一對(duì)socket來維護(hù),是屬于establish階段,在這個(gè)階段,通信是全雙工的,任何一方都能夠發(fā)送數(shù)據(jù)。

socket.close()對(duì)應(yīng)的階段是斷開連接(四次揮手)的階段。

2、剛開始對(duì)于ftp協(xié)議不是很理解,不知道他的工作方式是怎樣的,后來在看了tcp協(xié)議卷里面的ftp的內(nèi)容之后,才知道ftp命令和應(yīng)答碼是關(guān)鍵。eg:剛開始測試時(shí),在

輸入用戶名之后,不會(huì)提示輸入密碼的。原因:沒有返回對(duì)應(yīng)的應(yīng)答碼:331. 另外要注意的是:返回的數(shù)據(jù)要以換行回車作為結(jié)束--\r\n.

六、代碼列表

簡單說明:

ftpServer:是服務(wù)器的主程序,入口,同時(shí)負(fù)責(zé)監(jiān)聽本地的21號(hào)端口。

ControllerThread.java:用于處理控制連接的線程(每一個(gè)控制連接請(qǐng)求對(duì)應(yīng)一個(gè)線程)ps:實(shí)在很浪費(fèi)(流量小,連接多)。

Share:一些全局性數(shù)據(jù)的維護(hù)。

Command:是命令接口,定義了一個(gè)所有命令都要實(shí)現(xiàn)的方法。

CommandFactory:命令工廠,通過傳人的參數(shù),決定生成的命令對(duì)象。

UserCommand,PortCommand等:是具體ftp命令的實(shí)現(xiàn)

如何用java實(shí)現(xiàn)ftp客戶端程序

FTP 的主要操作都是基于各種命令基礎(chǔ)之上的。常用的命令有: · 設(shè)置傳輸模式,它包括ASCⅡ(文本) 和BINARY 二進(jìn)制模式; · 目錄操作,改變或顯示遠(yuǎn)程計(jì)算機(jī)的當(dāng)前目錄(cd、dir/ls 命令); · 連接操作,open命令用于建立同遠(yuǎn)程計(jì)算機(jī)的連接;close命令用于關(guān)閉連接; · 發(fā)送操作,put命令用于傳送文件到遠(yuǎn)程計(jì)算機(jī);mput 命令用于傳送多個(gè)文件到遠(yuǎn)程計(jì)算機(jī); · 獲取操作,get命令用于接收一個(gè)文件;mget命令用于接收多個(gè)文件。 編程思路 根據(jù)FTP 的工作原理,在主函數(shù)中建立一個(gè)服務(wù)器套接字端口,等待客戶端請(qǐng)求,一旦客戶端請(qǐng)求被接受,服務(wù)器程序就建立一個(gè)服務(wù)器分線程,處理客戶端的命令。如果客戶端需要和服務(wù)器端進(jìn)行文件的傳輸,則建立一個(gè)新的套接字連接來完成文件的操作。 編程技巧說明

如何用JAVA實(shí)現(xiàn)FTP訪問

在主函數(shù)中,完成服務(wù)器端口的偵聽和服務(wù)線程的創(chuàng)建。我們利用一個(gè)靜態(tài)字符串變量initDir 來保存服務(wù)器線程運(yùn)行時(shí)所在的工作目錄。服務(wù)器的初始工作目錄是由程序運(yùn)行時(shí)用戶輸入的,缺省為C盤的根目錄。

具體的代碼如下:

public class ftpServer extends Thread{

private Socket socketClient;

private int counter;

private static String initDir;

public static void main(String[] args){

if(args.length != 0) {

initDir = args[0];

}else{ initDir = "c:";}

int i = 1;

try{

System.out.println("ftp server started!");

//監(jiān)聽21號(hào)端口

ServerSocket s = new ServerSocket(21);

for(;;){

//接受客戶端請(qǐng)求

Socket incoming = s.accept();

//創(chuàng)建服務(wù)線程

new ftpServer(incoming,i).start();

i++;

}

}catch(Exception e){}

}

如何用java代碼實(shí)現(xiàn)ftp文件上傳

import java.io.File;

import java.io.FileInputStream;

import org.apache.commons.net.;

import org.apache.commons.net.;

public class test {

private FTPClient ftp;

/**

*

* @param path 上傳到ftp服務(wù)器哪個(gè)路徑下

* @param addr 地址

* @param port 端口號(hào)

* @param username 用戶名

* @param password 密碼

* @return

* @throws Exception

*/

private boolean connect(String path,String addr,int port,String username,String password) throws Exception {

boolean result = false;

ftp = new FTPClient();

int reply;

;

;

;

reply = ;

if (!FTPReply.isPositiveCompletion(reply)) {

;

return result;

}

;

result = true;

return result;

}

/**

*

* @param file 上傳的文件或文件夾

* @throws Exception

*/

private void upload(File file) throws Exception{

if(file.isDirectory()){

(file.getName());

(file.getName());

String[] files = file.list();

for (int i = 0; i files.length; i++) {

File file1 = new File(file.getPath()+"\\"+files[i] );

if(file1.isDirectory()){

upload(file1);

;

}else{

File file2 = new File(file.getPath()+"\\"+files[i]);

分享名稱:java用ftp代碼 java操作ftp上的文件
標(biāo)題URL:http://muchs.cn/article30/dohojso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站設(shè)計(jì)公司、網(wǎng)站制作、自適應(yīng)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)

廣告

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

微信小程序開發(fā)