`
Luob.
  • 浏览: 1588691 次
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多
1.使用 Serv-U 在本机上创建一个 FTP服务器   http://www.serv-u.com/
2.FTP 登录 下载 上传 文本文件 二进制文件


package com.itheima.net;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
/**
 * 模拟FTP文件传输
 * @author Bin
 */
public class TextFTPFileTran{
	
	// 对于导入 sun.net.TelnetInputStream; 报错 是权限不足 myeclise 默认不是使用sun 下面的额工具类 也可以自己建立一个 TelnetInputStream 继承 FilterInputStream 就可以了 
	// 项目 -->右键  -->property-->Java buil path--->lib-->
	// -->jre-system library-->Access rule-->edit-->Add-->Accessible sun/**-->OK  
	private TelnetInputStream getfile;
	private TelnetOutputStream putfile;
	private String info;
	private FtpClient ftp=null;
	private static final String serverIp="192.168.1.111";
	private static final String userName="root";
	private static final String passwd="123456";
	
	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		
		/**
		 * 开始前  Ser-U 已经建立了一个FTP文件服务器 在管理员中 有个root 用户  密码 123456 
		 * 根目录 /  = E:\360Downloads (包含:ebj-1.jpg , 123.html, 里面有个 show文件夹) 
		 * 本地目录 F: 包含(getopt.jar ,plant.xml)
		 */
		String fileName="123.html",fileName1="ebj-1.jpg",destFile="E:/123.html",destFile2="F:/ebj-1.jpg",
				upFile="F:/plant.xml",destFile1="plant.xml",
				currentDir="show",destFile3="getopt.jar",upFile1="F:/getopt.jar";
		
		TextFTPFileTran text=new TextFTPFileTran();
		System.out.println("=================1.登录");
		text.loginServer();
		System.out.println("=================2.从 E:/360Downloads 下载  123.html");
		text.downLoadText(fileName, destFile);
		System.out.println("=================3.从 E:/360Downloads 下载  ebj-1.jpg");
		text.downLoadBinary(fileName1, destFile2);
		System.out.println("=================4.上传F:/plant.xml  到  E:/360Downloads");
		text.uploadText(upFile, destFile1);
		System.out.println("=================4.上传F:/getopt.jar 到  E:/360Downloads");
		text.updateDirUpload(currentDir, destFile3, upFile1);
	}
	
	
	public void loginServer(){
		try {
			ftp=new FtpClient(serverIp);//与服务器建立连接 
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("不能与指定服务器简历连接:"+e.getMessage());
		}
		info=ftp.getResponseString(); //获取服务器响应的信息
		System.out.println("与FTP服务器进行连接:"+info);
		try {
			ftp.login(userName, passwd);
			
		} catch (Exception e) {
			System.out.println("用户登录失败:"+e.getMessage());
		}
		info=ftp.getResponseString();// 获取服务器响应信息
		System.out.println("登录服务器:"+info);
		
	}
	//获取服务器指定 目录下的文件 到本地目录下的文件
	public void downLoadText(String fileName,String destFile) throws IOException{
		getfile=ftp.get(fileName);
		info=ftp.getResponseString(); //获取服务器的响应信息
		System.out.println("获取服务器上的"+fileName+"文件:"+info);
		
		ftp.ascii(); //标志要上传下载的文件
		info=ftp.getResponseString(); //获取服务器的响应的信息
		System.out.println("下载文本文件:"+info);
		
		//创建输入路读取对象
		InputStreamReader isr=new InputStreamReader(getfile);
		//创建缓冲读取对象
		BufferedReader b=new BufferedReader(isr);
		//创建 缓冲写对象
		BufferedWriter writer=new  BufferedWriter(new FileWriter(new File(destFile)));
		
		while(true){
			String s=b.readLine();
			if(s==null){
				break;
			}else{
				writer.write(s);
			}
			writer.flush();
			writer.newLine();
		}
		writer.close();
		isr.close();
		b.close();
		getfile.close();
		System.out.println("下载文件"+fileName+"到本地"+destFile+"成功");
	}
	//下载而进制的文件代码
	public void downLoadBinary(String fileName,String destFile) throws IOException{
		ftp.binary(); //标志 上传下载 二进制的文件
		info=ftp.getResponseString();// 获取响应信息
		System.out.println("下载二进制文件:"+info);
		getfile=ftp.get(fileName);
		info=ftp.getResponseString();// 获取响应信息
		System.out.println("获取FTP服务器上的"+fileName+"文件:"+info);
		FileOutputStream output=new FileOutputStream(new File(destFile));
		
		while(true){
			int i=getfile.read();
			if(i==-1){
				break;
			}else{
				output.write((byte)i);
				output.flush();
			}
		}
		getfile.close();
		output.close();
		System.out.println("下载二进制文件"+fileName+"文件到本地:"+destFile);
		
	}
	
	
	public void uploadText(String upFile,String destFile) throws IOException{
		ftp.ascii(); //标致 要上传下载文件
		info=ftp.getResponseString();// 获取响应信息
		System.out.println("上传文本文件:"+info);
		
		putfile=ftp.put(destFile);
		info=ftp.getResponseString();// 获取响应信息
		System.out.println("设置上传到FTP服务器上的"+upFile+"文件:"+info);
		
		//创建缓冲读对象
		BufferedReader fis=new BufferedReader(new FileReader(upFile)); 
		//创建缓冲写对象
		BufferedWriter fos=new BufferedWriter(new OutputStreamWriter(putfile));
		while(true){
			String i=fis.readLine();
			if(i==null)
				break;
			else{
				fos.write(i); //写入文件中
				fos.flush(); //刷新 只有刷新才能写入文件成功
				fos.newLine();// 换行
			}
		}
		putfile.close();
		fis.close();
		fos.close();
		System.out.println("上传本地"+upFile+"文件到FTP服务器成功,路径为:"+destFile);
		
	}
	
	//更改FTP制定目录并且上传文件
	public void updateDirUpload(String currentDir,String destFile,String upFile) throws IOException{
		TelnetInputStream in=null;
		try {
			in=ftp.list(); //获取当前目录列表
		} catch (Exception e) {
			System.out.println("无法获取目录列表:"+e.getMessage());
		}
		info=ftp.getResponseString(); //获取服务器响应信息
		System.out.println("获取当前目录列表:"+info);
		try {
			int  ch;
			StringBuffer buf=new StringBuffer();
			in=ftp.list();//得到主机端当前目录下的所有文件和目录输入数据流
			while ((ch=in.read())>=0) {
				buf.append((char)ch);
			}
			in.close();
			System.out.println(buf);
		}catch (Exception e) {
			System.out.println("读取目录列表的信息:"+e.getMessage());
		}
		System.out.println("---"+info);
		try {
			ftp.cd(currentDir); //改变当前目录进入show目录下
		} catch (Exception e) {
			System.out.println("无法改变当前目录:"+e.getMessage());
		}
		info=ftp.getResponseString();
		System.out.println("改变当前"+currentDir+"目录:"+info);
		ftp.binary();// 上传下载二进制文件的标致
		putfile=ftp.put(destFile);// 设置上传的文件名
		info=ftp.getResponseString();
		System.out.println("上传到FTP服务器的文件名为:"+destFile+"信息"+info);
		
		//创建文件输入流
		FileInputStream fs=new FileInputStream(upFile);  
		while(true){
			int i=fs.read(); //读取Html文件
			if(i==-1)
				break;
			else{
				putfile.write((byte)i); //按字节写入文件中
				putfile.flush(); //刷新后才能写入成功!
			}
		}
		putfile.close();
		fs.close();
		System.out.println("本地文件"+upFile+"上传到FTP服务网上的"+currentDir+"目录下的"+destFile);
		
	}
	
	


}


0
0
分享到:
评论
2 楼 Luob. 2013-03-12  
regale 写道
jdk7跟6不兼容

我用的就是 jdk 6
是不是那个 权限没有设置
1 楼 regale 2013-03-12  
jdk7跟6不兼容

相关推荐

    C# FTP上传下载文件

    FTP上传下载文件

    VB API 实现FTP上传下载源代码

    **VB API FTP上传下载源代码详解** 在信息技术领域,FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议。在VB(Visual Basic)环境中,我们可以使用API(Application Programming Interface...

    VC++ FTP上传下载

    总的来说,VC++ FTP上传下载涉及网络编程、文件操作和XML处理等多个方面。开发者需要熟悉WinInet API或第三方FTP库的使用,理解FTP协议的工作原理,以及如何在C++中处理XML文件。通过这些技术,可以在VC++环境中实现...

    VisualC 实效编程 99 FTP上传下载

    VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效编程 99 FTP上传下载VisualC 实效...

    java Android安卓FTP登录上传下载删除

    java Android安卓FTP登录上传下载删除java Android安卓FTP登录上传下载删除java Android安卓FTP登录上传下载删除java Android安卓FTP登录上传下载删除java Android安卓FTP登录上传下载删除java Android安卓FTP登录...

    ftp上传下载图片

    "ftp上传下载图片" FTP(File Transfer Protocol,文件传输协议)是一种常用的网络协议,用于在网络上进行文件传输。FTP 协议允许用户在远程服务器上存储和检索文件。在这里,我们将讨论如何使用 C# 语言实现 FTP ...

    FTP工具上传下载FTP工具上传下载

    FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP工具上传下载FTP...

    一个ftp上传下载类(MFC)

    在这个场景中,"一个ftp上传下载类(MFC)" 是一个使用MFC构建的类,它封装了FTP协议,使得开发者能够方便地在自己的应用中实现FTP的上传和下载功能。 FTP上传下载类的核心功能包括: 1. **连接与断开**:类应包含...

    VB FTP上传下载

    ### VB FTP上传下载知识点解析 #### 一、概述 在提供的代码示例中,主要涉及了使用Visual Basic(简称VB)进行FTP(File Transfer Protocol,文件传输协议)上传与下载的功能实现。FTP是一种用于在网络上进行文件...

    FTP上传下载 C#源代码

    在本文中,我们将深入探讨FTP上传下载的C#源代码实现及其相关的知识点。 一、FTP基本概念 FTP允许用户在两台计算机之间交换文件,通常涉及一个服务器(提供文件)和一个客户端(请求文件)。它使用TCP作为传输层...

    VB6 FTP 上传 下载 源代码

    VB6 FTP 上传 下载 源代码,用的API,不是那种控件版本,拿来就能用. VB6 FTP 上传 下载 源代码,用的API,不是那种控件版本,拿来就能用. VB6 FTP 上传 下载 源代码,用的API,不是那种控件版本,拿来就能用.

    curl实现ftp上传下载

    FTP上传涉及到将本地文件发送到远程FTP服务器。使用libcurl,我们可以通过以下步骤实现: 1. **初始化libcurl**:创建一个`CURL`指针,并调用`curl_global_init()`初始化全局设置。 2. **设置URL**:使用`curl_...

    安卓FTP登录上传下载删除

    基于安卓的FTP登录、上传、下载、删除、文件夹创建和常用方法的封装。

    C#winform FTP图片上传下载

    在本文中,我们将深入探讨如何使用C# WinForm应用程序实现FTP(文件传输协议)功能,以便进行图片的上传和下载。FTP是一种广泛用于在互联网上交换文件的标准协议,而C# WinForm则提供了用户友好的图形界面来实现这一...

    Qt4实现ftp上传下载服务器

    **Qt4实现FTP上传下载服务器** Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面和移动设备的应用程序开发。FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,允许用户从远程主机...

    C#FTP上传下载

    C# FTP上传下载是开发过程中常见的一项任务,它涉及到网络通信和文件操作。在C#中,我们可以利用System.Net命名空间中的FtpWebRequest和FtpWebResponse类来实现FTP(File Transfer Protocol)的功能。下面将详细介绍...

    VB FTP文件上传、下载

    1. **FTP基础**:理解FTP的基本工作原理,包括主动模式和被动模式、FTP命令(如`PUT`用于上传,`GET`用于下载)、身份验证(匿名登录和用户名/密码登录)以及FTP会话的建立和关闭。 2. **VB与FTP的接口**:VB中可以...

    FTP上传与下载程序PB

    在这个"FTP上传与下载程序PB"的案例中,我们将会探讨如何使用PowerBuilder来实现FTP功能,包括文件的上传和下载,以及可能涉及的自动升级机制。 首先,理解FTP的基本概念至关重要。FTP允许用户在两台计算机之间交换...

    c++ 实现 ftp上传 下载

    在本文中,我们将深入探讨如何使用C++在...请注意,这只是一个基础的实现,实际应用可能需要处理更复杂的场景,如SSL/TLS加密、错误重试、多线程上传下载等。对于这些高级功能,libcurl提供了丰富的选项和API来支持。

Global site tag (gtag.js) - Google Analytics