




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、项目需要,网上搜了搜,很多,但问题也不少,估计转来转去,少了不少东西,而且也情况也不太一样。没办法,只能自己去写一个。一, 安装sserv-u ftp服务器 版本 我所设服务器配置:用户名:shiyanming密码:123端口:21跟目录:d:/ftpindex二、所需jar包:common-net-1.4.1.jarjakarta-oro-2.0.8.jar 注意:第二个jar包必须要存在,不然在列举ftp服务器中文件是出错 三、中文传输问题 四、具体程序 com.ftp. seforgeftputils.javapackage com.ftp;import java.io.
2、file;import java.io.fileinputstream;import java.io.filenotfoundexception;import java.io.fileoutputstream;import java.io.ioexception;import java.io.inputstream;import java.io.outputstream;import .urlencoder;import javax.servlet.http.httpservletresponse;import .ftp.ftp;import .ftp.ftpclient;import .ft
3、p.ftpclientconfig;import .ftp.ftpfile;import .ftp.ftpreply;/* * author shiyanming * */public class seforgeftputils /* * 上传程序方法 * */ public boolean uploadfile(string url, int port, string username, string password, string path, string filename, inputstream input) / filename:要上传的文件 / path :上传的路径 / 初始表
4、示上传失败 boolean success = false; / 创建ftpclient对象 ftpclient ftp = new ftpclient(); try int reply; / 连接ftp服务器 / 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接ftp服务器 ftp.connect(url, port); / 下面三行代码必须要,而且不能改变编码格式,否则不能正确下载中文文件 ftp.setcontrolencoding(gbk); ftpclientconfig conf = new ftpclientconfig(ftpclientconfig.s
5、yst_nt); conf.setserverlanguagecode(zh); / 登录ftp ftp.login(username, password); / 看返回的值是不是230,如果是,表示登陆成功 reply = ftp.getreplycode(); / 以2开头的返回值就会为真 if (!ftpreply.ispositivecompletion(reply) ftp.disconnect(); system.out.println(连接服务器失败); return success; system.out.println(登陆服务器成功); ftp.changeworkingd
6、irectory(path);/ 转移到ftp服务器目录 ftpfile fs = ftp.listfiles(); / 得到目录的相应文件列表 system.out.println(fs.length); system.out.println(filename); string filename1 = seforgeftputils.changename(filename, fs); string filename2 = new string(filename1.getbytes(gbk), iso-8859-1); string path1 = new string(path.getbyt
7、es(gbk), iso-8859-1); / 转到指定上传目录 ftp.changeworkingdirectory(path1); / 将上传文件存储到指定目录 / ftp.appendfile(new string(filename.getbytes(gbk),iso-8859-1), / input); ftp.setfiletype(ftp.binary_file_type); /如果缺省该句 传输txt正常 但图片和其他格式的文件传输出现乱码 ftp.storefile(filename2, input); / 关闭输入流 input.close(); / 退出ftp ftp.lo
8、gout(); / 表示上传成功 success = true; system.out.println(上传成功。); catch (ioexception e) e.printstacktrace(); finally if (ftp.isconnected() try ftp.disconnect(); catch (ioexception ioe) return success; /* * 删除程序 * */ public boolean deletefile(string url, int port, string username, string password, string p
9、ath, string filename) / filename:要上传的文件 / path :上传的路径 / 初始表示上传失败 boolean success = false; / 创建ftpclient对象 ftpclient ftp = new ftpclient(); try int reply; / 连接ftp服务器 / 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接ftp服务器 ftp.connect(url, port); / 下面三行代码必须要,而且不能改变编码格式,否则不能正确下载中文文件 ftp.setcontrolencoding(gbk); f
10、tpclientconfig conf = new ftpclientconfig(ftpclientconfig.syst_nt); conf.setserverlanguagecode(zh); / 登录ftp ftp.login(username, password); / 看返回的值是不是230,如果是,表示登陆成功 reply = ftp.getreplycode(); / 以2开头的返回值就会为真 if (!ftpreply.ispositivecompletion(reply) ftp.disconnect(); system.out.println(连接服务器失败); retu
11、rn success; system.out.println(登陆服务器成功); string filename2 = new string(filename.getbytes(gbk), iso-8859-1); string path1 = new string(path.getbytes(gbk), iso-8859-1); / 转到指定上传目录 ftp.changeworkingdirectory(path1); ftpfile fs = ftp.listfiles(); / 得到目录的相应文件列表 ftp.deletefile(filename2); ftp.logout(); su
12、ccess=true; catch (ioexception e) system.out.println(e); finally if (ftp.isconnected() try ftp.disconnect(); catch (ioexception ioe) return success; /* * 下载程序 * */ public static boolean downfile(string ip, int port, string username, string password, string remotepath, string filename, outputstream o
13、utputstream, httpservletresponse response) boolean success = false; ftpclient ftp = new ftpclient(); try int reply; ftp.connect(ip, port); / 下面三行代码必须要,而且不能改变编码格式 ftp.setcontrolencoding(gbk); ftpclientconfig conf = new ftpclientconfig(ftpclientconfig.syst_nt); conf.setserverlanguagecode(zh); / 如果采用默认
14、端口,可以使用ftp.connect(url) 的方式直接连接ftp服务器 ftp.login(username, password);/ 登录 ftp.setfiletype(ftpclient.binary_file_type); reply = ftp.getreplycode(); if (!ftpreply.ispositivecompletion(reply) ftp.disconnect(); return success; system.out.println(登陆成功。); ftp.changeworkingdirectory(remotepath);/ 转移到ftp服务器目
15、录 ftpfile fs = ftp.listfiles(); / 得到目录的相应文件列表 / system.out.println(fs.length);/打印列表长度 for (int i = 0; i fs.length; i+) ftpfile ff = fsi; if (ff.getname().equals(filename) string filename = filename; / 这个就就是弹出下载对话框的关键代码 response.setheader(content-disposition, attachment;filename= + urlencoder.encode(
16、filename, utf-8); / 将文件保存到输出流outputstream中 ftp.retrievefile(new string(ff.getname().getbytes(gbk), iso-8859-1), outputstream); outputstream.flush(); outputstream.close(); ftp.logout(); success = true; catch (ioexception e) e.printstacktrace(); finally if (ftp.isconnected() try ftp.disconnect(); catc
17、h (ioexception ioe) return success; / 判断是否有重名方法 public static boolean isdirexist(string filename, ftpfile fs) for (int i = 0; i fs.length; i+) ftpfile ff = fsi; if (ff.getname().equals(filename) return true; / 如果存在返回 正确信号 return false; / 如果不存在返回错误信号 / 根据重名判断的结果 生成新的文件的名称 public static string changen
18、ame(string filename, ftpfile fs) int n = 0; / 创建一个可变的字符串对象 即stringbuffer对象,把filename值付给该对象 stringbuffer filename1 = new stringbuffer(); filename1 = filename1.append(filename); system.out.println(filename1); while (isdirexist(filename1.tostring(), fs) n+; string a = + n + ; system.out.println(字符串a的值是
19、: + a); int b = filename1.lastindexof(.);/ 最后一出现小数点的位置 int c = filename1.lastindexof();/ 最后一次出现的位置 if (c 0) c = b; stringbuffer name = new stringbuffer(filename1.substring(0, c);/ 文件的名字 stringbuffer suffix = new stringbuffer(filename1.substring(b + 1);/ 后缀的名称 filename1 = name.append(a).append(.).app
20、end(suffix); return filename1.tostring(); /* * param args * throws filenotfoundexception * 测试程序 */ public static void main(string args) throws filenotfoundexception string path = ; file f1 = new file(c:新.txt); string filename = f1.getname(); system.out.println(filename); /inputstream input = new fil
21、einputstream(f1); /seforgeftputils a = new seforgeftputils(); /a.uploadfile(93, 21, shiyanming, 123, path, filename, input); /* * string path =d:ftpindex; file f2 = new * file(d:ftpindexold.txt); string filename2= f2.getname(); * system.out.println(filename2); seforgeftputils a = new * seforgeftputils();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省中职高考数学试卷
- 合肥中学数学试卷
- 河南安阳2024三模数学试卷
- 2025年中国过滤器元件行业市场发展前景及发展趋势与投资战略研究报告
- 电子废弃物处理项目可行性研究报告
- 银亭设计调研报告
- 中国色彩传感器行业市场深度分析及投资策略研究报告
- 2021-2026年中国红外气体分析仪行业投资分析及发展战略咨询报告
- 中国烧烤台板行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 2025年四川省德阳市初中学业水平考试中考物理真题试卷(中考真题+答案)
- 文化礼堂g管理制度
- 顺昌县土地综合整治项目可行性研究报告
- 乐器演奏团行业深度调研及发展项目商业计划书
- 2025年安徽交控集团财务有限公司招聘笔试参考题库含答案解析
- 2024年7月辽宁高中学业水平合格考地理试卷真题(含答案)
- 2025年中国邮政集团有限公司湖南省分公司人员招聘笔试备考试题参考答案详解
- 凡几PomPom设计生活季招商手册
- 2025年全国统一高考数学试卷(全国一卷)含答案
- CJ/T 120-2016给水涂塑复合钢管
- 会计领军人才试题及答案
- 2025年 呼伦贝尔农垦集团公司招聘笔试试卷附答案
评论
0/150
提交评论