目录
FTP(File Transfer Protocol)即文件传输协议,是一种基于TCP的协议,采用客户/服务器模式。通过FTP协议,用户可以在FTP服务器中进行文件的上传或下载等操作。虽然现在通过HTTP协议下载的站点有很多,但是由于FTP协议可以很好地控制用户数量和宽带的分配,快速方便地上传、下载文件,因此FTP已成为网络中文件上传和下载的首选服务器。同时,它也是一个应用程序,用户可以通过它把自己的计算机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP服务的功能是实现完整文件的异地传输。特点如下:
(一)FTP使用两个平行连接:控制连接和数据连接。控制连接在两主机间传送控制命令,如用户身份、口令、改变目录命令等。数据连接只用于传送数据。
(二)在一个会话期间,FTP服务器必须维持用户状态,也就是说,和某一个用户的控制连接不能断开。另外,当用户在目录树中活动时,服务器必须追踪用户的当前目录,这样,FTP就限制了并发用户数量。
(三)FTP支持文件沿任意方向传输。当用户与一远程计算机建立连接后,用户可以获得一个远程文件也可以将一本地文件传输至远程机器。
先添加一个用户,并且设置登录密码和账号以及此用户的访问权限

创建好之后就可以看到这个界面,证明服务器已开启:
要想在程序中与FTP服务器建立连接,要先导入所需的JAR文件
![]()
1、创建FTP客户端对象:
FTPClient ftpClient=new FTPClient();
2、创建本地文件输入流,用来存储上传的文件:
FileInputStream in=new FileInputStream(tempExcelFile);
3.与FTP建立连接
ftpClient.connect("192.168.254.189",21);
4.登录FTP服务器
boolean bol=ftpClient.login("###", "###");
5.ftpClient.changeWorkingDirectory("hwh");
6.设置文件类型:
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
7.将文件上传至FTP服务器:
ftpClient.storeFile(tempExcelFile.getName(), in);
代码实现:
- //上传
- public boolean uploadToFTP(Vector
colNameVector,Vector> dataVector) { - //1.生成一个临时文件
- File tempExcelFile=new File("D:\\TXT\\"+System.currentTimeMillis()+".xlsx");
- //2.将数据写入该Excel文件中(临时在本地进行存储)
- exportExcel(colNameVector, dataVector, tempExcelFile);
- //3.上传
- FTPClient ftpClient=new FTPClient();
- try (FileInputStream in=new FileInputStream(tempExcelFile);){
-
- ftpClient.connect("172.20.10.11",21);
- boolean bol=ftpClient.login("admin", "admin");
- System.out.println("登陆成功?"+bol);
- //设置文件上传类型
- ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
- //将本地文件上传至FTP服务器
- ftpClient.storeFile(tempExcelFile.getName(), in);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- return false;
- } catch (SocketException e) {
- e.printStackTrace();
- return false;
- } catch (IOException e) {
- e.printStackTrace();
- return false;
- }finally {
- try {
- ftpClient.disconnect();
- } catch (IOException e) {
- e.printStackTrace();
- return false;
- }
- }
- //删除临时文件
- tempExcelFile.delete();
-
- return true;
-
- }
1、创建FTP客户端对象:
FTPClient ftpClient=new FTPClient();
2、创建本地文件输出流,用来存储(写入)下载的文件:
FileInoutStream out=new FileoutputStream(upLoad);
3.与FTP建立连接
ftpClient.connect("192.168.254.189",21);
4.登录FTP服务器
boolean bol=ftpClient.login("###", "###");
5.切换目录
ftpClient.changeWorkingDirectory("dir01");
6.设置文件类型:
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
7.从FTP服务器中下载指定文件:
boolean isretrieve=ftpClient.retrieveFile(excelFileName, out);
return isretrieve;
代码实现:
- public boolean downLoadFileToFTP(String excelFileName, File upLoad) {
-
- // if(!upLoad.exists()) {
- // upLoad.mkdir();
- // }
- //创建FTP客户端对象
- FTPClient ftpClient=new FTPClient();
- try (FileOutputStream out=new FileOutputStream(upLoad);){
- //FTP连接
- ftpClient.connect("172.20.10.11",21);
- //登录
- boolean isLogin=ftpClient.login("admin", "admin");
- System.out.println("登陆成功?"+isLogin);
- //设置文件下载类型
- ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
- //从FTP服务器中下载指定文件
- boolean isretrieve=ftpClient.retrieveFile(excelFileName, out);
- return isretrieve;
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- return false;
- } catch (SocketException e) {
- e.printStackTrace();
- return false;
- } catch (IOException e) {
- e.printStackTrace();
- return false;
- }
-
- }
-
- }