- 浏览: 334244 次
- 性别:
- 来自: 广州
-
文章分类
- 全部博客 (299)
- 私人 (3)
- linux (22)
- web service (1)
- java applet (1)
- java (41)
- c# (1)
- socket (1)
- android (10)
- htc (1)
- root (1)
- ftp (3)
- 系统备份 (0)
- jquery (3)
- 图表 (1)
- 实用 (4)
- web (9)
- css (3)
- java applet mplayer (1)
- mplayer (4)
- javascript (8)
- eclipse (1)
- 正则表达式 (1)
- jmf (1)
- tomcat (6)
- 驱动 (1)
- 嵌入式 (1)
- usb (3)
- ffmpeg (1)
- player (1)
- encode (1)
- ajax (1)
- 单纯形复法 (1)
- rom (1)
- ndk (1)
- 打印 (1)
- vs2010 (2)
- myeclipse注册机 (1)
- c++ (5)
- capture (0)
- 串口 (1)
- windows (2)
- mingw (1)
- 网卡 (1)
- 绿色版 (1)
- cywin (1)
- x264 (1)
- 恢复文件 (1)
- servlet init 连数据库 (1)
- 51 单片机 (1)
- 操作系统 (1)
- vlc (3)
- 网线 (1)
- CListBox (1)
- mfc (1)
- setTimer (1)
- 分屏 (1)
- 供求信息 (1)
- 导航 (1)
- 批处理 (1)
- dos (1)
- mysql (5)
- MySQL新建用户 (1)
- demo (1)
- vc (1)
- webservice (1)
- 书签 (1)
- 浏览器 (1)
- spring mvc (1)
- excel (1)
- VPN (0)
- sql (1)
- pdf (3)
- arp (1)
- jsp (2)
- IE (1)
- html (1)
- test (3)
- httpclient (1)
- spring mvc 上传 (1)
- easyui (1)
- mybatis (1)
- spring (1)
- 微信 (1)
- weixin (2)
- pay (2)
- maven (2)
- fastdfs (2)
- ELK (2)
- logstash (1)
- rocketMQ (0)
- jmeter (0)
- 测试 (0)
- softether (0)
- util (0)
最新评论
-
ice24:
ftp client applet -
wuzijingaip:
499700647 写道你好,看了您的文章《ftp clien ...
ftp client applet -
zxcv193188:
感谢楼主
java JMF的使用 -
499700647:
你好,看了您的文章《ftp client aplet》很受启发 ...
ftp client applet -
JoeBaby_:
非常感谢,看文档的时候觉得JMF好难的样子,但是看过代码后思路 ...
java JMF的使用
一。本人项目中的
二。网上下的
1 SendMail -- 用于项目中贺卡的发送
原本来自于 aistill原作的代码:http://www.csdn.net/Develop/Read_Article.asp?Id=14929
本代码修改了一些实现。可增加任意附件,可支持HTML
可以不考虑设定标题、内容的是否合理等
本类采用了JavaMail及JAF包,需要从http://java.sun.com另行下载
另外,类中采用了我自己的Logger类,可按照自己情况修改
2 FTPConnection -- 用于项目中下载管理
提供FTP浏览,列表等简单功能,由于B/S架构的限制
无法普及使用。仅适用于管理员单用户使用
鉴于使用WEB方式访问FTP并上传下载的意义不大,仅提供浏览功能
目的是,从FTP中得到文件名称并加入到数据库提供下载
本类采用了sun提供的FTPClient类实现。该类功能极弱....
在ServU服务器测试通过
改进:如果要让多人使用,可以考虑将其实例加入Session
============= 代码:SendMail.java =====================
package nona.util;
/**
* 以下的包需要下载
* JAF 1.0.2
* JavaMail 1.3.1
* http://java.sun.org
*/
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import javax.activation.*;
import java.io.*;
/**
* 邮件发送类,用于发送邮件及附件
* 支持mime格式及Html,支持多附件
* <p>Title: 冰云工作室</p>
* <p>Description: 邮件发送</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: icecloud@sina.com</p>
* @author 冰云
* @version 1.0 August.23rd 2003
* @todo 使用者请修改Logger.log为System.out.println
*/
public class SendMail {
private MimeMessage mimeMsg; //MIME邮件对象
private Session session; //邮件会话对象
private Properties props; //系统属性
private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
private String authentication = "false"; //smtp是否需要认证
private String username = ""; //smtp认证用户名和密码
private String password = "";
private String from = "";
private String to = "";
private String cc = "";
private String bcc = "";
private String body = "";
private String subject = "";
private String host = "";
private String reply = "";
private String sender = "";
private String date = "";
private boolean textmail = true;
private String mailtype = PLAIN;
private static final String HTML = "text/html;charset=GB2312";
private static final String PLAIN = "text/plain; charset=GB2312";
private ArrayList attachment = new ArrayList();
/**
*
*/
public SendMail() {
this(true);
}
public SendMail(boolean textmail) {
this.textmail = textmail;
this.mailtype = textmail ? PLAIN : HTML;
}
public SendMail(String from, String to, String subject, String body) {
this();
loadDefault();
}
private boolean createMimeMessage() {
try {
// Logger.log(this,"createMimeMessage():准备获取邮件会话对象!");
session = Session.getDefaultInstance(props, null); //获得邮件会话对象
}
catch (Exception e) {
Logger.logerr(this, "createMimeMessage():获取邮件会话对象时发生错误!");
Logger.logerr(this, e);
return false;
}
try {
mimeMsg = new MimeMessage(session); //创建MIME邮件对象
mp = new MimeMultipart();
return true;
}
catch (Exception e) {
Logger.logerr(this, "createMimeMessage():创建MIME邮件对象失败!");
Logger.logerr(this, e);
return false;
}
}
private boolean initMail() {
if (props == null) {
props = System.getProperties(); //获得系统属性对象
}
if ("".equals(host)) { // 设置主机
loadDefault();
}
props.put("mail.smtp.host", host); //设置SMTP主机
if (!this.createMimeMessage())
return false;
props.put("mail.smtp.auth", authentication); //设置认证
try {
if (!"".equals(subject)) // 设置标题
mimeMsg.setSubject(subject);
if (!"".equals(from)) //设置发信人
mimeMsg.setFrom(new InternetAddress(from));
if (!"".equals(to)) // 设置收信人
mimeMsg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
if (!"".equals(cc)) // 设置抄送
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(cc));
if (!"".equals(bcc)) // 设置密件抄送
mimeMsg.setRecipients(Message.RecipientType.BCC,
(Address[]) InternetAddress.parse(bcc));
if (!"".equals(reply)) //设置回复
mimeMsg.setReplyTo( (Address[]) InternetAddress.parse(reply));
// if (!"".equals(date)) //设置日期
// mimeMsg.setSentDate(new Date(date));
if (!"".equals(body)) { // 设置内容
if (!this.textmail) {
BodyPart bp = new MimeBodyPart();
bp.setContent(body, mailtype);
mp.addBodyPart(bp);
}
else {
mimeMsg.setText(body);
}
}
if (!attachment.isEmpty()) { // 设置附件
for (Iterator it = attachment.iterator(); it.hasNext(); ) {
BodyPart bpr = new MimeBodyPart();
FileDataSource fileds = new FileDataSource( (String) it.next());
bpr.setDataHandler(new DataHandler(fileds));
bpr.setFileName(fileds.getName());
mp.addBodyPart(bpr);
}
}
return true;
}
catch (Exception e) {
Logger.logerr(this, "initMail():设置邮件发生错误!");
Logger.logerr(this, e);
return false;
}
}
public boolean Send() {
try {
if (initMail()) {
if (mp.getCount() > 0)
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
Logger.log(this, "正在发送邮件....");
Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect( (String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());
Logger.log(this, "发送邮件成功!");
transport.close();
return true;
}
else {
return false;
}
}
catch (Exception e) {
Logger.logerr(this, "邮件发送失败!");
Logger.logerr(this, e);
return false;
}
}
private void loadDefault() {
}
public void setCc(String cc) {
this.cc = cc;
}
public void setBcc(String bcc) {
this.bcc = bcc;
}
public void setHost(String host, boolean auth) {
this.host = host;
this.authentication = String.valueOf(auth);
}
public void setHost(String host, boolean auth, String username,
String password) {
setHost(host, auth);
setUsername(username);
setPassword(password);
}
public void setHost(String host, String username, String password) {
setHost(host, true);
setUsername(username);
setPassword(password);
}
public void setHost(String host) {
setHost(host, true);
}
public void setFrom(String from) {
this.from = from;
}
public void setPassword(String password) {
this.password = password;
}
public void setTo(String to) {
this.to = to;
}
public void setUsername(String username) {
this.username = username;
}
public void setAttachment(String filename) {
this.attachment.add(filename);
}
public void setBody(String body) {
this.body = body;
}
public void setSubject(String subject) {
this.subject = subject;
}
public void setReply(String reply) {
this.reply = reply;
}
public void setSender(String sender) {
this.sender = sender;
}
public static void main(String[] argc) {
if (argc.length == 0) {
System.out.println("Useage:SendMail [smtp] [user] [password] [to] [body]");
}
else {
SendMail sm = new SendMail();
sm.setHost(argc[0], argc[1], argc[2]);
sm.setTo(argc[3]);
sm.setBody(argc[4]);
if (sm.Send()) {
System.out.print("Send successful.");
}
else {
System.out.print("Send failed.");
}
}
}
}
================== 代码:FTPConnection.java ===============
package nona.util;
import sun.net.ftp.*;
import java.io.*;
import java.io.IOException;
import java.util.StringTokenizer;
import sun.net.ftp.*;
import java.util.ArrayList;
/**
* FTP连接代码,可浏览FTP等
* 仅适用于管理员操作,不适合普通用
*
* <p>Title: 冰云工作室</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author 冰云
* @version 1.0 August.23rd 2003
*/
public class FTPConnection {
FtpClient client;
private String host;
private String username;
private String password;
private String path = "/";
private int port = 21;
private static FTPConnection instance;
private FTPConnection() {
}
// 单例类的方法,获得唯一实例
public static FTPConnection getInstance() {
if (instance == null) {
instance = new FTPConnection();
}
return instance;
}
// 连接FTP,并进入当前的path
public void connect() throws IOException {
if (client == null) {
client = new FtpClient(host, port);
client.login(username, password);
client.binary();
client.cd(path);
}
else {
client.noop();
client.cd(path);
}
}
// 关闭FTP
public void close() throws IOException {
if (client != null) {
client.closeServer();
}
}
// 获得FTPClient类,可以直接对其操作
public FtpClient getClient() throws IOException {
if (client == null) {
connect();
}
return client;
}
// 返回当前目录的所有文件及文件夹
public ArrayList getFileList() throws IOException {
BufferedReader dr = new BufferedReader(new InputStreamReader(client.list()));
ArrayList al = new ArrayList();
String s = "";
while ( (s = dr.readLine()) != null) {
al.add(s);
}
return al;
}
// 返回当前目录的文件名称
public ArrayList getNameList() throws IOException {
BufferedReader dr = new BufferedReader(new InputStreamReader(client.
nameList(path)));
ArrayList al = new ArrayList();
String s = "";
while ( (s = dr.readLine()) != null) {
al.add(s);
}
return al;
}
// 判断一行文件信息是否为目录
public boolean isDir(String line) {
return ( (String) parseLine(line).get(0)).indexOf("d") != -1;
}
public boolean isFile(String line) {
return!isDir(line);
}
// 处理getFileList取得的行信息
private ArrayList parseLine(String line) {
ArrayList s1 = new ArrayList();
StringTokenizer st = new StringTokenizer(line, " ");
while (st.hasMoreTokens()) {
s1.add(st.nextToken());
}
return s1;
}
public String getFileName(String line) {
return ( (String) parseLine(line).get(8));
}
public String getFileSize(String line) {
return (String) parseLine(line).get(4);
}
public String getFileDate(String line) {
ArrayList a = parseLine(line);
return (String) a.get(5) + " " + (String) a.get(6) + " " + (String) a.get(7);
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPath() {
return path;
}
public void setPath(String path) throws IOException {
if (client == null)
this.path = path;
else {
client.cd(path);
}
}
public void setPort(int port) {
this.port = port;
}
}
============== 使用方法例 ====================
1 SendMail:
<%
SendMail sm = new SendMail();
sm.setHost("smtp.vip.sina.com","user","pass");
sm.setSubject("xxx");
sm.setTo("xx");
....随便选择几个set写就行...
....很多可以省略
out.println(sm.send()); // true or false
%>
2 FTPConnection:
<%
FTPConnection ftpc = FTPConnection.getInstance();
ftpc.setHost("192.168.10.100");
ftpc.setUsername("admin");
ftpc.setPassword("123");
ftpc.connect();
%>
<table border="1">
<tr>
<td></td>
<td>名称</td>
<td>大小</td>
<td>创建时间</td>
</tr>
<%
// 遍历用getFileList取得的当前目录下的信息,并得到每个文件的一行信息
for(Iterator it = ftpc.getFileList().iterator();it.hasNext();){
String line = (String)it.next(); %>
<tr>
<td><%if (ftpc.isDir(line)) {%>dir<%}else{%>file<%}%></td>
<td><%=ftpc.getFileName(line)%></td>
<td><%=ftpc.getFileSize(line)%></td>
<td><%=ftpc.getFileDate(line)%></td>
</tr>
<%
}
%>
</table>
说明:
1 FTPConnection中,如果文件名含有空格可能会出现错误
2 SendMail中,loadDefault()函数未提供实现,可采用自己的properties文件来初始化
3 使用SendMail请修改所有的Logger,这是我自定义的记录类,忘记删除了,可考虑用System.out.println代替
4 FTPConnection中,如果用在普通用户页面上,请勿采用单例模式而采用普通的类并将其加入Session
5 FTPConnection换页进入目录的同时,可修改path,这样可以继续浏览下级目录的内容
public ActionForward selectFtp( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response ) { try { String host = request.getLocalAddr(); String path = ""; String username = "ftpadmin"; String password = "123456"; if(request.getParameter("loginftpmsg") != null){ String loginftpmsg = request.getParameter("loginftpmsg"); String[] ls = loginftpmsg.split("@"); host = ls[1]; username = loginftpmsg.split(":")[0]; password = ls[0].split(":")[1]; } FTPDAO ftpserver = new FTPDAO(); List ftpserverlist = ftpserver.query(); request.setAttribute("ftpserverlist", ftpserverlist); FtpConnection myftp = new FtpConnection(); // List ftplist = myftp.loginFtp(ip, name, password); List ftplist = new ArrayList(); request.setAttribute("ftplist", ftplist); FtpClient fc; FtpClient client = null; try{ // System.out.println(host = "192.168.0.18"); client = new FtpClient(host); client.login(username, password); client.binary(); client.cd("."); }catch (Exception e) { System.err.println("Connect to ftpserver "+host+" error !"); } DataInputStream dis = new DataInputStream(client.list()); String s = ""; while ((s = dis.readLine()) != null) { String str = new String(s.replace(" ", ">").getBytes( "iso-8859-1"), "gb2312"); while (str.indexOf(">>") != -1) { str = str.replace(">>", ">"); } String[] item = str.split(">"); FtpFileBean bean = new FtpFileBean(); for (int i = 0; i < item.length; i++) { bean.setSize((long) Double.parseDouble(item[4].toString())); bean.setType(item[1]); bean.setD1(new MyString().kbToMbOrG(item[4].toString(),true)); bean.setFilename(item[8]); } if (bean.getFilename().endsWith(".zip") || bean.getFilename().endsWith(".rpm") || bean.getFilename().endsWith(".gz") || bean.getFilename().endsWith(".lic") || bean.getFilename().endsWith(".tar") || bean.getFilename().endsWith(".deb")) ftplist.add(bean); } request.setAttribute("host", host); request.setAttribute("username", username); request.setAttribute("password", password); request.setAttribute("ftplist", ftplist); } catch (Exception e) { System.err.println("login ftpserver error!"); } return mapping.findForward("selectFtp"); }
二。网上下的
1 SendMail -- 用于项目中贺卡的发送
原本来自于 aistill原作的代码:http://www.csdn.net/Develop/Read_Article.asp?Id=14929
本代码修改了一些实现。可增加任意附件,可支持HTML
可以不考虑设定标题、内容的是否合理等
本类采用了JavaMail及JAF包,需要从http://java.sun.com另行下载
另外,类中采用了我自己的Logger类,可按照自己情况修改
2 FTPConnection -- 用于项目中下载管理
提供FTP浏览,列表等简单功能,由于B/S架构的限制
无法普及使用。仅适用于管理员单用户使用
鉴于使用WEB方式访问FTP并上传下载的意义不大,仅提供浏览功能
目的是,从FTP中得到文件名称并加入到数据库提供下载
本类采用了sun提供的FTPClient类实现。该类功能极弱....
在ServU服务器测试通过
改进:如果要让多人使用,可以考虑将其实例加入Session
============= 代码:SendMail.java =====================
package nona.util;
/**
* 以下的包需要下载
* JAF 1.0.2
* JavaMail 1.3.1
* http://java.sun.org
*/
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import javax.activation.*;
import java.io.*;
/**
* 邮件发送类,用于发送邮件及附件
* 支持mime格式及Html,支持多附件
* <p>Title: 冰云工作室</p>
* <p>Description: 邮件发送</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: icecloud@sina.com</p>
* @author 冰云
* @version 1.0 August.23rd 2003
* @todo 使用者请修改Logger.log为System.out.println
*/
public class SendMail {
private MimeMessage mimeMsg; //MIME邮件对象
private Session session; //邮件会话对象
private Properties props; //系统属性
private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象
private String authentication = "false"; //smtp是否需要认证
private String username = ""; //smtp认证用户名和密码
private String password = "";
private String from = "";
private String to = "";
private String cc = "";
private String bcc = "";
private String body = "";
private String subject = "";
private String host = "";
private String reply = "";
private String sender = "";
private String date = "";
private boolean textmail = true;
private String mailtype = PLAIN;
private static final String HTML = "text/html;charset=GB2312";
private static final String PLAIN = "text/plain; charset=GB2312";
private ArrayList attachment = new ArrayList();
/**
*
*/
public SendMail() {
this(true);
}
public SendMail(boolean textmail) {
this.textmail = textmail;
this.mailtype = textmail ? PLAIN : HTML;
}
public SendMail(String from, String to, String subject, String body) {
this();
loadDefault();
}
private boolean createMimeMessage() {
try {
// Logger.log(this,"createMimeMessage():准备获取邮件会话对象!");
session = Session.getDefaultInstance(props, null); //获得邮件会话对象
}
catch (Exception e) {
Logger.logerr(this, "createMimeMessage():获取邮件会话对象时发生错误!");
Logger.logerr(this, e);
return false;
}
try {
mimeMsg = new MimeMessage(session); //创建MIME邮件对象
mp = new MimeMultipart();
return true;
}
catch (Exception e) {
Logger.logerr(this, "createMimeMessage():创建MIME邮件对象失败!");
Logger.logerr(this, e);
return false;
}
}
private boolean initMail() {
if (props == null) {
props = System.getProperties(); //获得系统属性对象
}
if ("".equals(host)) { // 设置主机
loadDefault();
}
props.put("mail.smtp.host", host); //设置SMTP主机
if (!this.createMimeMessage())
return false;
props.put("mail.smtp.auth", authentication); //设置认证
try {
if (!"".equals(subject)) // 设置标题
mimeMsg.setSubject(subject);
if (!"".equals(from)) //设置发信人
mimeMsg.setFrom(new InternetAddress(from));
if (!"".equals(to)) // 设置收信人
mimeMsg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
if (!"".equals(cc)) // 设置抄送
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(cc));
if (!"".equals(bcc)) // 设置密件抄送
mimeMsg.setRecipients(Message.RecipientType.BCC,
(Address[]) InternetAddress.parse(bcc));
if (!"".equals(reply)) //设置回复
mimeMsg.setReplyTo( (Address[]) InternetAddress.parse(reply));
// if (!"".equals(date)) //设置日期
// mimeMsg.setSentDate(new Date(date));
if (!"".equals(body)) { // 设置内容
if (!this.textmail) {
BodyPart bp = new MimeBodyPart();
bp.setContent(body, mailtype);
mp.addBodyPart(bp);
}
else {
mimeMsg.setText(body);
}
}
if (!attachment.isEmpty()) { // 设置附件
for (Iterator it = attachment.iterator(); it.hasNext(); ) {
BodyPart bpr = new MimeBodyPart();
FileDataSource fileds = new FileDataSource( (String) it.next());
bpr.setDataHandler(new DataHandler(fileds));
bpr.setFileName(fileds.getName());
mp.addBodyPart(bpr);
}
}
return true;
}
catch (Exception e) {
Logger.logerr(this, "initMail():设置邮件发生错误!");
Logger.logerr(this, e);
return false;
}
}
public boolean Send() {
try {
if (initMail()) {
if (mp.getCount() > 0)
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
Logger.log(this, "正在发送邮件....");
Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect( (String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());
Logger.log(this, "发送邮件成功!");
transport.close();
return true;
}
else {
return false;
}
}
catch (Exception e) {
Logger.logerr(this, "邮件发送失败!");
Logger.logerr(this, e);
return false;
}
}
private void loadDefault() {
}
public void setCc(String cc) {
this.cc = cc;
}
public void setBcc(String bcc) {
this.bcc = bcc;
}
public void setHost(String host, boolean auth) {
this.host = host;
this.authentication = String.valueOf(auth);
}
public void setHost(String host, boolean auth, String username,
String password) {
setHost(host, auth);
setUsername(username);
setPassword(password);
}
public void setHost(String host, String username, String password) {
setHost(host, true);
setUsername(username);
setPassword(password);
}
public void setHost(String host) {
setHost(host, true);
}
public void setFrom(String from) {
this.from = from;
}
public void setPassword(String password) {
this.password = password;
}
public void setTo(String to) {
this.to = to;
}
public void setUsername(String username) {
this.username = username;
}
public void setAttachment(String filename) {
this.attachment.add(filename);
}
public void setBody(String body) {
this.body = body;
}
public void setSubject(String subject) {
this.subject = subject;
}
public void setReply(String reply) {
this.reply = reply;
}
public void setSender(String sender) {
this.sender = sender;
}
public static void main(String[] argc) {
if (argc.length == 0) {
System.out.println("Useage:SendMail [smtp] [user] [password] [to] [body]");
}
else {
SendMail sm = new SendMail();
sm.setHost(argc[0], argc[1], argc[2]);
sm.setTo(argc[3]);
sm.setBody(argc[4]);
if (sm.Send()) {
System.out.print("Send successful.");
}
else {
System.out.print("Send failed.");
}
}
}
}
================== 代码:FTPConnection.java ===============
package nona.util;
import sun.net.ftp.*;
import java.io.*;
import java.io.IOException;
import java.util.StringTokenizer;
import sun.net.ftp.*;
import java.util.ArrayList;
/**
* FTP连接代码,可浏览FTP等
* 仅适用于管理员操作,不适合普通用
*
* <p>Title: 冰云工作室</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author 冰云
* @version 1.0 August.23rd 2003
*/
public class FTPConnection {
FtpClient client;
private String host;
private String username;
private String password;
private String path = "/";
private int port = 21;
private static FTPConnection instance;
private FTPConnection() {
}
// 单例类的方法,获得唯一实例
public static FTPConnection getInstance() {
if (instance == null) {
instance = new FTPConnection();
}
return instance;
}
// 连接FTP,并进入当前的path
public void connect() throws IOException {
if (client == null) {
client = new FtpClient(host, port);
client.login(username, password);
client.binary();
client.cd(path);
}
else {
client.noop();
client.cd(path);
}
}
// 关闭FTP
public void close() throws IOException {
if (client != null) {
client.closeServer();
}
}
// 获得FTPClient类,可以直接对其操作
public FtpClient getClient() throws IOException {
if (client == null) {
connect();
}
return client;
}
// 返回当前目录的所有文件及文件夹
public ArrayList getFileList() throws IOException {
BufferedReader dr = new BufferedReader(new InputStreamReader(client.list()));
ArrayList al = new ArrayList();
String s = "";
while ( (s = dr.readLine()) != null) {
al.add(s);
}
return al;
}
// 返回当前目录的文件名称
public ArrayList getNameList() throws IOException {
BufferedReader dr = new BufferedReader(new InputStreamReader(client.
nameList(path)));
ArrayList al = new ArrayList();
String s = "";
while ( (s = dr.readLine()) != null) {
al.add(s);
}
return al;
}
// 判断一行文件信息是否为目录
public boolean isDir(String line) {
return ( (String) parseLine(line).get(0)).indexOf("d") != -1;
}
public boolean isFile(String line) {
return!isDir(line);
}
// 处理getFileList取得的行信息
private ArrayList parseLine(String line) {
ArrayList s1 = new ArrayList();
StringTokenizer st = new StringTokenizer(line, " ");
while (st.hasMoreTokens()) {
s1.add(st.nextToken());
}
return s1;
}
public String getFileName(String line) {
return ( (String) parseLine(line).get(8));
}
public String getFileSize(String line) {
return (String) parseLine(line).get(4);
}
public String getFileDate(String line) {
ArrayList a = parseLine(line);
return (String) a.get(5) + " " + (String) a.get(6) + " " + (String) a.get(7);
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPath() {
return path;
}
public void setPath(String path) throws IOException {
if (client == null)
this.path = path;
else {
client.cd(path);
}
}
public void setPort(int port) {
this.port = port;
}
}
============== 使用方法例 ====================
1 SendMail:
<%
SendMail sm = new SendMail();
sm.setHost("smtp.vip.sina.com","user","pass");
sm.setSubject("xxx");
sm.setTo("xx");
....随便选择几个set写就行...
....很多可以省略
out.println(sm.send()); // true or false
%>
2 FTPConnection:
<%
FTPConnection ftpc = FTPConnection.getInstance();
ftpc.setHost("192.168.10.100");
ftpc.setUsername("admin");
ftpc.setPassword("123");
ftpc.connect();
%>
<table border="1">
<tr>
<td></td>
<td>名称</td>
<td>大小</td>
<td>创建时间</td>
</tr>
<%
// 遍历用getFileList取得的当前目录下的信息,并得到每个文件的一行信息
for(Iterator it = ftpc.getFileList().iterator();it.hasNext();){
String line = (String)it.next(); %>
<tr>
<td><%if (ftpc.isDir(line)) {%>dir<%}else{%>file<%}%></td>
<td><%=ftpc.getFileName(line)%></td>
<td><%=ftpc.getFileSize(line)%></td>
<td><%=ftpc.getFileDate(line)%></td>
</tr>
<%
}
%>
</table>
说明:
1 FTPConnection中,如果文件名含有空格可能会出现错误
2 SendMail中,loadDefault()函数未提供实现,可采用自己的properties文件来初始化
3 使用SendMail请修改所有的Logger,这是我自定义的记录类,忘记删除了,可考虑用System.out.println代替
4 FTPConnection中,如果用在普通用户页面上,请勿采用单例模式而采用普通的类并将其加入Session
5 FTPConnection换页进入目录的同时,可修改path,这样可以继续浏览下级目录的内容
相关推荐
Java FTP 客户端和服务端的开发涉及到网络编程和文件传输协议的重要概念。FTP(File Transfer Protocol)是一种标准网络协议,用于在计算机之间交换文件。Java作为一种通用的、面向对象的编程语言,提供了丰富的库来...
Java FTP Server是一种基于Java语言实现的FTP(File Transfer Protocol)服务器,它允许用户通过FTP协议在互联网上进行文件传输。FTP是Internet上广泛使用的标准服务之一,主要用于在客户端和服务器之间上传、下载...
Java FTP服务器文件上传下载是Java开发中常见的网络编程任务,主要涉及到FTP(File Transfer Protocol)协议的应用,用于在客户端和服务器之间传输文件。本教程将详细讲解如何使用Java实现FTP服务器的文件上传、下载...
Java FTP连接池是一种用于管理FTP(文件传输协议)连接的资源池,它的主要目标是提高应用程序的性能和效率。在传统的FTP操作中,每次需要连接到FTP服务器时都会创建一个新的连接,这会消耗大量时间和系统资源。而...
Java FTP技术是Java编程中用于实现文件传输协议(FTP)的一种方法,主要用于在客户端和服务器之间上传、下载文件。在Java中,我们可以使用`java.net`包中的`Socket`类来实现基本的FTP功能,但更常见的是使用Apache ...
在Java编程中,FTP(File Transfer Protocol)是一个用于在计算机之间传输文件的标准协议。这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。...
### Java FTP 指定下载文件和上传文件到指定的服务器目录 #### 一、概述 在本篇文章中,我们将详细介绍如何使用Java编程语言通过FTP(文件传输协议)实现文件的上传与下载功能,并能够将文件指定上传或下载到特定...
Java FTP服务器实例是一个非常实用的学习资源,特别是对于那些初次接触FTP(文件传输协议)服务器开发的Java程序员。FTP是互联网上一种广泛使用的协议,用于在客户端和服务器之间上传、下载文件。通过Java来实现FTP...
FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在互联网上进行文件传输。断点续传是FTP的一个重要特性,允许用户在文件...了解这些知识点将使你能够高效地实现在Java环境中进行FTP文件的断点续传操作。
Java FTP文件上传下载是Java开发中常见的网络编程任务,它涉及到Java语言的Socket编程和FTP(File Transfer Protocol)协议的应用。FTP是一种用于在网络上进行文件传输的标准协议,它允许客户端从服务器上获取文件...
Java FTP(File Transfer Protocol)是Java编程中用于与FTP服务器交互的一种技术,它允许程序员编写应用程序来上传、下载文件,并实现断点续传功能。在本文中,我们将深入探讨Java FTP上传、下载以及断点续传的核心...
通过上述知识点的梳理,我们可以了解到如何使用 Java 编写一个基本的 FTP 客户端程序,包括连接 FTP 服务器、下载文件以及关闭连接等功能。此外,还可以进一步学习如何将 FTP 功能集成到 Web 应用程序中,如使用 JSP...
Java FTP(File Transfer Protocol)上传和下载是网络编程中常见的任务,主要涉及到文件在本地与远程服务器之间的传输。本文将详细介绍如何使用Java实现FTP的上传和下载功能,并结合提供的资源——"WinFtp Server...
Java FTP(文件传输协议)是Java编程中用于与FTP服务器进行交互的一种技术。FTP是一种标准的网络协议,用于在互联网上可靠地交换文件。在Java中,我们可以利用Apache Commons Net库来实现FTP客户端的功能,从而上传...
Java FTP 断续上传与下载是网络编程中的一个重要概念,主要应用于大文件传输,它可以提高文件传输的效率和可靠性。FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,而断续上传和下载则是...
Java FTP上传下载是Java编程语言中用于实现文件传输协议(FTP)的一种常见应用。FTP允许用户在客户端和服务器之间交换文件,这对于数据共享、备份和远程协作非常有用。以下是一些关于Java FTP上传下载的关键知识点:...
Java FTP上传工具包是一款专为Android平台设计的FTP客户端代码库,它允许开发者在Android应用中集成FTP文件传输功能,支持断点续传,提高了上传大文件时的效率和可靠性。这一工具包对于那些需要在移动设备上进行文件...
JavaFTP是一个基于Java实现的FTP(File Transfer Protocol)服务器程序,它允许用户通过FTP协议进行文件的上传、下载以及管理操作。FTP是互联网上一种广泛使用的文件传输协议,主要用于在客户端和服务器之间交换文件...
在IT行业中,Java FTP上传、下载以及RAR压缩与解压是常见的操作,这些功能在文件管理系统、数据迁移、备份恢复等场景中广泛应用。本篇将详细介绍如何使用Java实现FTP(File Transfer Protocol)传输以及RAR文件的...
Java ftp工具类,可以实现ftp上传,读取,目录切换,内容创建,目录创建、检查文件是否存在,支持主动方式和被动方式读取