java ftp windows_Windows下Ftp搭建和Java中的使用个人总结

本文介绍了在Windows下使用FileZilla Server搭建FTP服务器,并详细讲述了如何使用Java的FTPClient进行文件上传、下载和删除操作。通过实例代码,展示了如何配置和连接FTP服务器,以及在Java项目中实现FTP功能。

最近项目中使用到了FTP服务器,于是就进行学习了一下。项目真实的FTP环境是在客户方的,所以为了在项目开发中方便,就根据网上的资料搭建了一个FTP服务器,然后用java实现了一下对ftp的操作。

当然网上已经有了很多这方面的资料,主要是为了稳固刚学到的知识,所以将自己搭建的过程和代码的编写进行记录下来。

ftp环境搭建

首先,选择一个ftp服务器软件,我选择FileZilla Server这个软件还不错,百度上能够直接搜到,免费的。

软件的安装过程如果没有太大的需求,基本上下一步下一步就行,一直到安装完毕。这个就不列了。

安装好的界面应该是这样的,当然我这个已经运行了。

2ac6b70434c2b7656490256982a5cfe4.png

接下来就是添加用户,这个用户用来进行登录使用,之后再Java代码中也会用到。

点击edit->users->general->add 填写用户名,然后点击enable account 设置密码,除用户名外,与下图保持一致即可,点击ok。

568046f1dc1f466121175a1c4f5f066e.png

添加完用户后需要添加一个ftp共享目录,以后账号登录进去后上传和下载的空间,其实就是创建一个文件夹。点击add,权限区域需要设置下,因为这将决定你创建的共享目录,别人是否能够进行读写,因为是在本地进行测试的所以我全都差不多都勾了。

81b3c2263218b6ca924856eaa8a27503.png

好了,基本上的配置完毕,至于还有一些对上传下载的速度限制,以及响应时间、日志等设置,如有特殊需要可以自己设置,这里就不多说了。

限制ftp环境搭建完毕,我们可以通过多种方式进行访问.

dos访问,进行检验

efe383bdfef289a2eeec04aaffbf47d8.png

可以进入,并且能够进行操作。

当然也可以在win+R中进行输入ftp://127.0.0.1 (当然不建议使用这个ip 建议使用真实Ip)

其次是在文件夹上输入ftp://127.0.0.1进行访问,如图

8acb1b5d733817c4b6a3360807d668e7.png

Java对ftp的操作

创建一个项目,因为是写的一个测试项目,所以一个普通的java project就行。我的目录如下:

43525776ff46f7726ec50abb24863b8b.png

本次ftp操作使用了commons-net的FTPClient类实现,commons-net是apache的一个开源项目,网上可以直接下载;

创建properties文件

这个文件可以创建,也可以不创建,不过个人习惯喜欢将一些固定的配置进行写在配置文件里。

ftp.url=127.0.0.1ftp.port=21ftp.userName=zdp

ftp.password=123456ftp.path=test2

ftp.downpath=test2

ftp的上传操作

创建Java文件,FtpUpload.java。具体代码如下:

public static boolean upload(String fileName,InputStream input){//fileName是要上传的文件名称,input是读取要上传的文件的流

boolean issuccess=false;

FTPClient ftp=newFTPClient();

Properties pt=FtpUtils.getProperties();try{intreply;

ftp.connect(pt.getProperty("ftp.url"));//创建连接,如果端口号是默认的21 则可以只有一个参数

ftp.login(pt.getProperty("ftp.userName"), pt.getProperty("ftp.password"));

reply=ftp.getReplyCode();if(!FTPReply.isPositiveCompletion(reply)){

ftp.disconnect();returnissuccess;

}

ftp.makeDirectory(pt.getProperty("ftp.path"));//如果不存在创建存放目录

ftp.changeWorkingDirectory(pt.getProperty("ftp.path")); 将位置转移到存放目录

ftp.storeFile(fileName, input); 数据存放

input.close();

ftp.logout();

issuccess= true;

}catch(SocketException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}finally{if(ftp.isConnected()) {try{

ftp.disconnect();

}catch(IOException ioe) {

}

}

}returnissuccess;

}

获取InputStream 代码

publicInputStream getInputSteam(String files) {

InputStream in= null;try{

in= new FileInputStream(newFile(files));

}catch(FileNotFoundException e) {

e.printStackTrace();

}returnin;

}

Main函数调用启动测试

public static voidmain(String[] args) {

FtpUtils ftp=newFtpUtils();

String filename="D://aaa.txt";boolean issuccess = false;

issuccess=ftp.upload(newFile(filename.trim()).getName(),ftp.getInputSteam(filename));

}

ftp下载操作

创建Java文件,FtpDown.java。具体代码如下:

/***

*@paramftp 传入ftp对象,这样可以维护一个对象来进行操作上传下载,或者多次下载

* 避免每次进行操作都创建ftp对象

*@paramfileName 下载的文件名

*@paramlocalPath 下载位置

*@paramftppath ftp上的路径

*@return*@throwsIOException*/

public static booleandownFile(FTPClient ftp,String fileName,String localPath,String ftppath)throwsIOException{boolean issuccess=false;intreply;

reply=ftp.getReplyCode();if(!FTPReply.isPositiveCompletion(reply)){

ftp.disconnect();returnissuccess;

}

ftp.changeWorkingDirectory(ftppath);

FTPFile[] fs=ftp.listFiles();for(FTPFile ff:fs){if(ff.getName().equals(fileName)){

File localFile= new File(localPath+"/"+ff.getName());

OutputStream is= newFileOutputStream(localFile);

ftp.retrieveFile(ff.getName(), is);

is.close();

}

}

issuccess= true;returnissuccess;

}

ftp删除操作

创建Java文件,FtpDelete.java。具体代码如下:

可以直接调用该方法,然后传入路径名进行删除

ftp.deleteFile(pathname)

未完待续。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值