您的位置:首页 > 编程语言 > Java开发

使用JAVA程序操作FTP服务器

2017-01-17 00:40 211 查看
使用JAVA程序操作FTP服务器

注:

一切操作都会在Linux下进行

端口可能会被拒绝,教程中默认关闭防火墙,需要开防火墙请添加端口规则

开始之前需要做2件事:

1、模拟一个FTP服务器 。

http://blog.csdn.net/gfd54gd5f46/article/details/53932028#t1

2、引用JAR包进行编译。

本教程同样要使用Jar包,如果不会使用,请先阅读:

如何使用jar包 :http://blog.csdn.net/gfd54gd5f46/article/details/54578347

1、 JAVA程序查看ftp下的所有文件夹(局域网)


首先创建一个FtpDemo.java的文件


vi FtpDemo.java


源码:

import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import java.nio.charset.Charset;
import java.io.*;
public class FtpDemo{

/*
获取FTP服务器上所有的目录
*/
public static void conn(){
//初始化FTP客服端
FTPClient ftp = new FTPClient();
try{
//通过IP跟端口进行连接
//192.168.20.111 是我FTP服务器的IP,你需要换成你自己的
ftp.connect("192.168.20.111",21);

//登录名,密码
ftp.login("lingdu","123");

//设置编码
ftp.setCharset(Charset.forName("UTF-8"));
ftp.setControlEncoding("UTF-8");

//获取目录列表存放在数组中
FTPFile files[] = ftp.listDirectories();
for(int i = 0; i < files.length; i++){
FTPFile file = files[i];

//获取文件名
String fileName = file.getName();

//打印文件名
System.out.println(fileName);
}
}catch(SocketException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
try{
Thread.sleep(500);
}catch(InterruptedException e1){
e1.printStackTrace();
}
try{
ftp.abor();
}catch(IOException e){
e.printStackTrace();
}
}
}

public static void main(String args[]){
conn();
}
}



还需要下载一个jar包:


链接:http://pan.baidu.com/s/1cuz7T8 密码:y8v6




注:我把Jar包跟源文件放在同一目录下


编译:

javac -cp .:commons-net-3.5.jar FtpDemo.java


运行:

java -cp .:commons-net-3.5.jar FtpDemo




已经成功获取到FTP服务器下的所有文件夹了。

2、JAVA程序通过ftp传文件到电脑(局域网)


这时需要改造一下代码了:


源码

import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import java.nio.charset.Charset;
import java.io.*;
public class FtpDemo{

/*
上传文件到FTP服务器
*/
public static void conn(){
//初始化FTP客服端
FTPClient ftp = new FTPClient();
try{
//通过IP跟端口进行连接
ftp.connect("192.168.20.137",2121);

//登录名,密码
ftp.login("anonymous","123456");

//设置编码
ftp.setCharset(Charset.forName("UTF-8"));
ftp.setControlEncoding("UTF-8");

//将本地文件上传到FTP服务器的方法(fileName,filePath)
ftp.storeFile("/FtpDemo.java.bak",new FileInputStream("/home/lingdu/Desktop/javaCode/test/FtpDemo.java.bak"));

System.out.rpintln("上传成功!");

}catch(SocketException e){

e.printStackTrace();
}catch(IOException e){

e.printStackTrace();
}finally{

try{
Thread.sleep(500);
}catch(InterruptedException e1){
e1.printStackTrace();
}
try{
ftp.abor();
}catch(IOException e){
e.printStackTrace();
}
}
}

public static void main(String args[]){
conn();
}
}



作为测试,我们把当前目录下的FtpDemo.java.bak文件上传到FTP服务器上





编译:

javac -cp .:commons-net-3.5.jar FtpDemo.java


运行:

java -cp .:commons-net-3.5.jar FtpDemo



上传成功。





然后我们去FTP服务器看看是否有这个文件存在。


可以使用命令行的ftp工具,也可以使用Linux自带的可视化工具

这里直接使用Linux自带的可视化工具连接FTP查看

我使用的Linux系统是带界面的。




选择FTP(with login)

填写主机名:你自己的主机名





填写用户名和密码





Conncet之后就能看到ftp文件夹了


此时我们看到已经上传到FTP服务器了。



3、JAVA程序通过ftp传文件到手机(局域网)


前期准备:



1、手机下载FTP服务器


到应用商店下载一个FTP服务器,有很多版本,随便下载一个就可以




然后创建一个用户名和密码





开启服务就可以了



第一台手机测试上传到 魅族手机上。





第二台手机测试上传到 小米手机上





2、引用JAR包进行编译。



我们继续改造一下代码:


源码:

import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import java.nio.charset.Charset;
import java.io.*;
public class FtpDemo {

/*
通过FTP传文件到手机
*/
public static void test() {
//定义一个二位数组存放ip跟端口
//我这里使用两台手机进行测试(同时传文件到两台手机上)
String ips[][] = {
{ "192.168.20.211", "2121" },
{ "192.168.20.166", "2121" }
};

//初始化FTP客服端
FTPClient ftp = new FTPClient();

//遍历二维数组
for (int i = 0; i < ips.length; i++) {
try {
//通过ip和端口连接FTP服务器,因为端口是整型数据,所以需要强制类型转换一下
ftp.connect(ips[i][0], Integer.parseInt(ips[i][1]));

//手机端设置的FTP服务器的 用户名和密码
//帐号密码我统一设置成一样的,方便测试
ftp.login("root", "123456");

//设置编码
ftp.setCharset(Charset.forName("UTF-8"));
ftp.setControlEncoding("UTF-8");

//传输文件 fileName,filePath
ftp.storeFile("/FtpDemo.java.bak",new FileInputStream
("/home/lingdu/Desktop/javaCode/test/FtpDemo.java.bak"));

//屏幕打印结果
System.out.println("ip:" + ips[i][0] + "-------- yes");
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
Thread.sleep(500);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
try {
//关闭服务
ftp.abor();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

public static void main(String args[]) {
test();
}
}


编译:

javac -cp .:commons-net-3.5.jar FtpDemo.java



注:编译的时候报错:


说明没有使用超级管理员权限




运行:


java -cp .:commons-net-3.5.jar FtpDemo





然后同样我们去手机上确认一下:注意端口号是手机上FTP的端口号,我这里是:
2121






确实把文件上传到手机上了。





使用手机上的Ex文件浏览器查看一下:




也确实上传上来了。


当然,FTP的功能不止这些


例如:删除,创建,下载,等等。。。。。这里就不一一做说明了


具体可以浏览API文档:[b]FTPClient (Apache Commons Net 3.5 API)
[/b]

http://commons.apache.org/proper/commonsnet/apidocs/org/apache/commons/net/ftp/FTPClient.html


也可以把[b]FTPClient.java
源码导出来在Eclipse下浏览:[/b]

源码下载地址:

链接:http://pan.baidu.com/s/1cuz7T8 密码:y8v6


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java ftp服务器 jar