使用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
首先创建一个FtpDemo.java的文件
源码:
还需要下载一个jar包:
链接:http://pan.baidu.com/s/1cuz7T8 密码:y8v6
注:我把Jar包跟源文件放在同一目录下
编译:
运行:
已经成功获取到FTP服务器下的所有文件夹了。
这时需要改造一下代码了:
源码
作为测试,我们把当前目录下的FtpDemo.java.bak文件上传到FTP服务器上
编译:
运行:
上传成功。
然后我们去FTP服务器看看是否有这个文件存在。
可以使用命令行的ftp工具,也可以使用Linux自带的可视化工具
这里直接使用Linux自带的可视化工具连接FTP查看
我使用的Linux系统是带界面的。
选择FTP(with login)
填写主机名:你自己的主机名
填写用户名和密码
Conncet之后就能看到ftp文件夹了
此时我们看到已经上传到FTP服务器了。
前期准备:
1、手机下载FTP服务器
到应用商店下载一个FTP服务器,有很多版本,随便下载一个就可以
然后创建一个用户名和密码
开启服务就可以了
第一台手机测试上传到 魅族手机上。
第二台手机测试上传到 小米手机上
2、引用JAR包进行编译。
我们继续改造一下代码:
源码:
编译:
注:编译的时候报错:
说明没有使用超级管理员权限
运行:
然后同样我们去手机上确认一下:注意端口号是手机上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]
源码下载地址:
注:
一切操作都会在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使用FTPClient连接文件服务器并做相应操作(代码)
- Java如何操作Android的adb shell 之 我自己在程序中的使用方法
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
- 使用FTPClient连接文件服务器并做相应操作(代码)
- 关于使用FTP上传文件到服务器的小总结-java
- [Java] 使用 Apache的 Commons-net库 实现FTP操作
- java程序使用纯JDBC方式操作SQLServer2005数据库(无需配置数据源)
- JAVA中使用FTPClient实现FTP上文件的操作
- 在Java的Spring框架的程序中使用JDBC API操作数据库
- java----使用socket模拟简单的http请求服务器,响应简单的文件请求操作
- Java程序使用HASP加密狗加密保护的操作步骤--手把手包你学会
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
- java中使用ftp上传下载到服务器
- ubuntu在安装LDAP服务器,在windows客户端下查看,并使用java操作LDAP
- 使用Java程序动态操作Tomcat
- java基础加强--使用BeanUtils工具包操作JavaBean测试程序
- Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
- Ubuntu 服务器上设置 使用service 命令启动 java程序
- Java如何操作Android的adb shell 之 我自己在程序中的使用方法