﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-java技术</title><link>http://www.blogjava.net/spark/</link><description>智慧是第一生产力</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 19:01:47 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 19:01:47 GMT</pubDate><ttl>60</ttl><item><title>ftp实现上传下载，解决了编码问题。</title><link>http://www.blogjava.net/spark/archive/2010/01/19/310032.html</link><dc:creator>空空</dc:creator><author>空空</author><pubDate>Tue, 19 Jan 2010 01:16:00 GMT</pubDate><guid>http://www.blogjava.net/spark/archive/2010/01/19/310032.html</guid><wfw:comment>http://www.blogjava.net/spark/comments/310032.html</wfw:comment><comments>http://www.blogjava.net/spark/archive/2010/01/19/310032.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/spark/comments/commentRss/310032.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spark/services/trackbacks/310032.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;很多人都碰到ftp的上传下载文件的实现，很容易碰到一些问题，最难解决的是乱码的问题，在网上搜索了挺多，也没人能讲得清楚详细的，这里把自己实现的程序贴出来，供大家参考。以后碰到这些问题，可以自己多看看java的API，还是很有帮助的。&nbsp;&nbsp;&nbsp;&nbsp;另外在实现ftp上传下载的时候，还要多考虑一下上传下载失败或...&nbsp;&nbsp;<a href='http://www.blogjava.net/spark/archive/2010/01/19/310032.html'>阅读全文</a><img src ="http://www.blogjava.net/spark/aggbug/310032.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spark/" target="_blank">空空</a> 2010-01-19 09:16 <a href="http://www.blogjava.net/spark/archive/2010/01/19/310032.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql命令（转）</title><link>http://www.blogjava.net/spark/archive/2009/12/04/304782.html</link><dc:creator>空空</dc:creator><author>空空</author><pubDate>Fri, 04 Dec 2009 07:38:00 GMT</pubDate><guid>http://www.blogjava.net/spark/archive/2009/12/04/304782.html</guid><wfw:comment>http://www.blogjava.net/spark/comments/304782.html</wfw:comment><comments>http://www.blogjava.net/spark/archive/2009/12/04/304782.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spark/comments/commentRss/304782.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spark/services/trackbacks/304782.html</trackback:ping><description><![CDATA[<p>测试环境：mysql 5.0.45<br />
【注：可以在mysql中通过mysql&gt; SELECT VERSION();来查看数据库版本】<br />
整理：leo<br />
一、连接MYSQL。<br />
格式： mysql -h主机地址 -u用户名 －p用户密码<br />
1、连接到本机上的MYSQL。<br />
首先打开DOS窗口，然后进入目录mysql\bin，再键入命令mysql -u root -p，回车后提示你输密码.注意用户名前可以有空格也可以没有空格，但是密码前必须没有空格，否则让你重新输入密码.<br />
如果刚安装好MYSQL，超级用户root是没有密码的，故直接回车即可进入到MYSQL中了，MYSQL的提示符是： mysql&gt;<br />
2、连接到远程主机上的MYSQL。假设远程主机的IP为：110.110.110.110，用户名为root,密码为abcd123。则键入以下命令：<br />
mysql -h110.110.110.110 -u root -p 123;（注:u与root之间可以不用加空格，其它也一样）<br />
3、退出MYSQL命令： exit （回车）<br />
二、修改密码。<br />
格式：mysqladmin -u用户名 -p旧密码 password 新密码<br />
1、给root加个密码ab12。首先在DOS下进入目录mysql\bin，然后键入以下命令<br />
mysqladmin -u root -password ab12<br />
注：因为开始时root没有密码，所以-p旧密码一项就可以省略了。<br />
2、再将root的密码改为djg345。<br />
mysqladmin -u root -p ab12 password djg345<br />
三、增加新用户。<br />
（注意：和上面不同，下面的因为是MYSQL环境中的命令，所以后面都带一个分号作为命令结束符）<br />
格式：grant select on 数据库.* to 用户名@登录主机 identified by &#8220;密码&#8221;<br />
1、增加一个用户test1密码为abc，让他可以在任何主机上登录，并对所有数据库有查询、插入、修改、删除的权限。首先用root用户连入MYSQL，然后键入以下命令：<br />
grant select,insert,update,delete on *.* to [email=test1@&#8221;%]test1@&#8221;%[/email]&#8221; Identified by &#8220;abc&#8221;;<br />
但增加的用户是十分危险的，你想如某个人知道test1的密码，那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了，解决办法见2。<br />
2、增加一个用户test2密码为abc,让他只可以在localhost上登录，并可以对数据库mydb进行查询、插入、修改、删除的操作（localhost指本地主机，即MYSQL数据库所在的那台主机），<br />
这样用户即使用知道test2的密码，他也无法从internet上直接访问数据库，只能通过MYSQL主机上的web页来访问了。<br />
grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by &#8220;abc&#8221;;<br />
如果你不想test2有密码，可以再打一个命令将密码消掉。<br />
grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by &#8220;&#8221;;<br />
下篇我是MYSQL中有关数据库方面的操作。注意：你必须首先登录到MYSQL中，以下操作都是在MYSQL的提示符下进行的，而且每个命令以分号结束。<br />
一、操作技巧<br />
1、如果你打命令时，回车后发现忘记加分号，你无须重打一遍命令，只要打个分号回车就可以了。<br />
也就是说你可以把一个完整的命令分成几行来打，完后用分号作结束标志就OK。<br />
2、你可以使用光标上下键调出以前的命令。<br />
二、显示命令<br />
1、显示当前数据库服务器中的数据库列表：<br />
mysql&gt; SHOW DATABASES;<br />
注意：mysql库里面有MYSQL的系统信息，我们改密码和新增用户，实际上就是用这个库进行操作。<br />
2、显示数据库中的数据表：<br />
mysql&gt; USE 库名；<br />
mysql&gt; SHOW TABLES;<br />
3、显示数据表的结构：<br />
mysql&gt; DESCRIBE 表名;<br />
4、建立数据库：<br />
mysql&gt; CREATE DATABASE 库名;<br />
5、建立数据表：<br />
mysql&gt; USE 库名;<br />
mysql&gt; CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));<br />
6、删除数据库：<br />
mysql&gt; DROP DATABASE 库名;<br />
7、删除数据表：<br />
mysql&gt; DROP TABLE 表名；<br />
8、将表中记录清空：<br />
mysql&gt; DELETE FROM 表名;<br />
9、显示表中的记录：<br />
mysql&gt; SELECT * FROM 表名;<br />
10、往表中插入记录：<br />
mysql&gt; INSERT INTO 表名 VALUES (&#8221;hyq&#8221;,&#8221;M&#8221;);<br />
11、更新表中数据：<br />
mysql-&gt; UPDATE 表名 SET 字段名1=&#8217;a',字段名2=&#8217;b&#8217; WHERE 字段名3=&#8217;c';<br />
12、用文本方式将数据装入数据表中：<br />
mysql&gt; LOAD DATA LOCAL INFILE &#8220;D:/mysql.txt&#8221; INTO TABLE 表名;<br />
13、导入.sql文件命令：<br />
mysql&gt; USE 数据库名;<br />
mysql&gt; SOURCE d:/mysql.sql;<br />
14、命令行修改root密码：<br />
mysql&gt; UPDATE mysql.user SET password=PASSWORD(&#8217;新密码&#8217;) WHERE User=&#8217;root&#8217;;<br />
mysql&gt; FLUSH PRIVILEGES;<br />
15、显示use的数据库名：<br />
mysql&gt; SELECT DATABASE();<br />
16、显示当前的user：<br />
mysql&gt; SELECT USER();<br />
三、一个建库和建表以及插入数据的实例<br />
drop database if exists school; //如果存在SCHOOL则删除<br />
create database school; //建立库SCHOOL<br />
use school; //打开库SCHOOL<br />
create table teacher //建立表TEACHER<br />
(<br />
id int(3) auto_increment not null primary key,<br />
name char(10) not null,<br />
address varchar(50) default &#8216;深圳&#8217;,<br />
year date<br />
); //建表结束<br />
//以下为插入字段<br />
insert into teacher values(&#8221;,&#8217;allen&#8217;,'大连一中&#8217;,'1976-10-10&#8242;);<br />
insert into teacher values(&#8221;,&#8217;jack&#8217;,'大连二中&#8217;,'1975-12-23&#8242;);<br />
如果你在mysql提示符键入上面的命令也可以，但不方便调试。<br />
（1）你可以将以上命令原样写入一个文本文件中，假设为school.sql，然后复制到c:\\下，并在DOS状态进入目录[url=file://\\mysql\\bin]\\mysql\\bin[/url]，然后键入以下命令：<br />
mysql -uroot -p密码 &lt; c:\\school.sql<br />
如果成功，空出一行无任何显示；如有错误，会有提示。（以上命令已经调试，你只要将//的注释去掉即可使用）。<br />
（2）或者进入命令行后使用 mysql&gt; source c:\\school.sql; 也可以将school.sql文件导入数据库中。<br />
四、将文本数据转到数据库中<br />
1、文本数据应符合的格式：字段数据之间用tab键隔开，null值用[url=file://\\n]\\n[/url]来代替.例：<br />
3 rose 大连二中 1976-10-10<br />
4 mike 大连一中 1975-12-23<br />
假设你把这两组数据存为school.txt文件，放在c盘根目录下。<br />
2、数据传入命令 load data local infile &#8220;c:\\school.txt&#8221; into table 表名;<br />
注意：你最好将文件复制到[url=file://\\mysql\\bin]\\mysql\\bin[/url]目录下，并且要先用use命令打表所在的库。<br />
五、备份数据库：（命令在DOS的[url=file://\\mysql\\bin]\\mysql\\bin[/url]目录下执行）<br />
1.导出整个数据库<br />
导出文件默认是存在mysql\bin目录下<br />
mysqldump -u 用户名 -p 数据库名 &gt; 导出的文件名<br />
mysqldump -u user_name -p123456 database_name &gt; outfile_name.sql<br />
2.导出一个表<br />
mysqldump -u 用户名 -p 数据库名 表名&gt; 导出的文件名<br />
mysqldump -u user_name -p database_name table_name &gt; outfile_name.sql<br />
3.导出一个数据库结构<br />
mysqldump -u user_name -p -d &#8211;add-drop-table database_name &gt; outfile_name.sql<br />
-d 没有数据 &#8211;add-drop-table 在每个create语句之前增加一个drop table<br />
4.带语言参数导出<br />
mysqldump -uroot -p &#8211;default-character-set=latin1 &#8211;set-charset=gbk &#8211;skip-opt database_name &gt; outfile_name.sql</p>
<p>&nbsp;</p>
<p>本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/networld2002/archive/2009/04/23/4103407.aspx</p>
<img src ="http://www.blogjava.net/spark/aggbug/304782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spark/" target="_blank">空空</a> 2009-12-04 15:38 <a href="http://www.blogjava.net/spark/archive/2009/12/04/304782.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows平台下Apache2.2+php5+MySQL5+zend的环境搭建配置（转）</title><link>http://www.blogjava.net/spark/archive/2009/12/04/304781.html</link><dc:creator>空空</dc:creator><author>空空</author><pubDate>Fri, 04 Dec 2009 07:35:00 GMT</pubDate><guid>http://www.blogjava.net/spark/archive/2009/12/04/304781.html</guid><wfw:comment>http://www.blogjava.net/spark/comments/304781.html</wfw:comment><comments>http://www.blogjava.net/spark/archive/2009/12/04/304781.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spark/comments/commentRss/304781.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spark/services/trackbacks/304781.html</trackback:ping><description><![CDATA[<div align="left">
<div>网上已经有很多此类文章了，但我在CSDN仍看到不少新人为此问题困扰。</div>
<div>&nbsp;</div>
<div><font color="#ff0000">1.便捷方法：装一体化环境</font>，如果你并非打算深入，或者刚入门。则可以先用一体化环境来配置。优点是下完安装即可使用，1分钟就能搞定。如果原来系统中装有IIS，则把端口设为 81或者其他非80端口。（以下皆为apache+php+mysql+zend）</div>
<div>&nbsp;</div>
<div>&nbsp; 1&gt; php4的一体化环境</div>
<div><a href="http://www.onlinedown.net/soft/22078.htm"><font face="宋体">http://www.onlinedown.net/soft/22078.htm</font></a></div>
<div>&nbsp;</div>
<div>&nbsp; 2&gt; php5的一体化环境</div>
<div><a href="http://www.onlinedown.net/soft/42567.htm"><font face="宋体">http://www.onlinedown.net/soft/42567.htm</font></a></div>
<div>&nbsp;</div>
<div><font color="#ff0000">2.如果你需要一个较为稳健而功能强劲的配置环境</font>，则参看以下。本文采用最新版本的php、apache、mysql、zend。</div>
<div>&nbsp;</div>
<div>其实，因为网上很多文章其实也没什么错，但有些细节的地方有问题。特别是在apache2.2.4与php5模块化安装的整合上。</div>
<div>&nbsp;</div>
<div>先准备安装文件，几个安装文件我用华军软件园的下载地址，大家放心下：</div>
<div>&nbsp;</div>
<div>apache2.2.4</div>
<div><a href="http://www.onlinedown.net/soft/11528.htm"><font face="宋体"><font color="#000000">最新版</font>http://www.onlinedown.net/soft/11528.htm</font></a></div>
<div><font face="宋体">发帖时最新版<a href="http://ytcnc.onlinedown.net/down/apache_2.2.4-win32-x86-no_ssl.zip">http://ytcnc.onlinedown.net/down/apache_2.2.4-win32-x86-no_ssl.zip</a></font></div>
<div>&nbsp;</div>
<div>php5.2.3</div>
<div>
<div><a href="http://www.onlinedown.net/soft/1772.htm"><font face="宋体"><font color="#000000">最新版</font>http://www.onlinedown.net/soft/1772.htm</font></a></div>
<div><font face="宋体">发帖时最新版<a href="http://sx.huajun.net/down/php-5.2.3-Win32.zip"><font face="宋体">http://sx.huajun.net/down/php-5.2.3-Win32.zip</font></a></font></div>
<div>&nbsp;</div>
<div>
<div>Mysql5.0.41</div>
<div><a href="http://www.onlinedown.net/soft/3573.htm"><font face="宋体"><font face="宋体"><font color="#000000">最新版</font>http://www.onlinedown.net/soft/3573.htm</font></font></a></div>
<div>
<div><font face="宋体">发帖时最新版</font><a href="http://sccnc.onlinedown.net/down/mysql-5.0.41-win32.zip">http://sccnc.onlinedown.net/down/mysql-5.0.41-win32.zip</a></div>
</div>
<div>&nbsp;</div>
<div>zend optimizer 3.2.6</div>
<div><font face="宋体">最新版<a href="http://www.onlinedown.net/soft/32228.htm">http://www.onlinedown.net/soft/32228.htm</a></font></div>
<div><font face="宋体">发帖时最新版<a href="http://sccnc.onlinedown.net/down/ZendOptimizer-3.2.6-Windows-i386.zip"><font face="宋体">http://sccnc.onlinedown.net/down/ZendOptimizer-3.2.6-Windows-i386.zip</font></a></font></div>
<div>&nbsp;</div>
<div>phpmyadmin</div>
<div>
<div><a href="http://www.onlinedown.net/soft/2616.htm"><font face="宋体"><font color="#000000">最新版</font>http://www.onlinedown.net/soft/2616.htm</font></a></div>
<div><font face="宋体">发帖时最新版</font><a href="http://sccnc.onlinedown.net/down/phpMyAdmin-2.10.3-rc1-all-languages.zip"><font face="宋体">http://sccnc.onlinedown.net/down/phpMyAdmin-2.10.3-rc1-all-languages.zip</font></a></div>
</div>
</div>
</div>
<div>&nbsp;</div>
<div>-----------------------------------------------------------------------</div>
<div>&nbsp;</div>
<div><font color="#ff0000">1.安装apache2.2.4</font>至某个目录比如我的是D:"apache2</div>
<div><font color="#ff0000">2.解压php5</font>到D:"apache2"php5目录下</div>
<div><font color="#ff0000">3.安装mysql5</font>到D:"apache2"mysql目录下</div>
<div>&nbsp;</div>
<div><font color="#ff0000">4.配置apache</font>：</div>
<div>&nbsp;1)打开d:"apache2"conf目录下的httpd.conf文件。</div>
<div>&nbsp;2)apache httpd.conf设置</div>
<div>&nbsp; <font color="#0000ff">A</font><font color="#0000ff">.网站主目录设置：</font>搜索<font face="宋体">DocumentRoot "D:/apache2/htdocs"</font></div>
<div>&nbsp; 修改引号中的地址，为apache网页主目录。也就是<a href="http://localhost/">http://localhost</a>:端口号的目录。</div>
<div>&nbsp;&nbsp;<font color="#0000ff">B.端口设置：</font>搜索 listen，改为 Listen 81（此例中以81为端口）。如不装IIS可保留默认值为80。设为81，则主页为 <a href="http://localhost:81/">http://localhost:81</a> 否则为<a href="http://localhost/">http://localhost</a></div>
<div>&nbsp; <font color="#0000ff">C.加载php5模块化安装：</font>搜索Loadmodule，在后面加一行：</div>
<div><font face="宋体">LoadModule php5_module d:/apache2/php/php5apache2_2.dll</font></div>
<div>&nbsp;</div>
<div>（这里是很多网上攻略出错的地方，apache2.2版本以下一般为</div>
<div><font face="宋体">LoadModule php5_module d:/apache2/php/php5apache2.dll</font></div>
<div>apache2.2以上的版本则不行。更有甚者，竟然把php5apache2.dll改写成支持apache2.2的了，牛是很牛了，但不知道中国搞技术的到底是怎么了，都懒得自主思考，一点怀疑精神都没有。）</div>
<div>&nbsp;&nbsp;</div>
<div>&nbsp;&nbsp;<font color="#0000ff">D. php格式解析</font></div>
<div>&nbsp;&nbsp; 搜索 addType application在后面加一行：</div>
<div><font face="宋体">&nbsp;&nbsp; AddType application/x-httpd-php .php</font></div>
<div>&nbsp;&nbsp;</div>
<div>&nbsp; <font color="#0000ff">E.字符集</font></div>
<div>
<p><font face="宋体">&nbsp; 搜索&nbsp;AddDefaultCharset ISO-8859-1 将其改为</font></p>
<p><font face="宋体">&nbsp; AddDefaultCharset GB2312</font></p>
<p><font color="#ff0000">5.配置php</font></p>
</div>
<div>&nbsp; 至D:"apache2"php目录下，把<font face="宋体">&nbsp;php.ini-dist或php.ini-recommended</font>拷贝至c:"windows目录下，改名为php.ini。拷贝D:"apache2"php目录下的<font face="宋体">php5ts.dll,libmysql.dll至C:"windows"system32目录下</font></div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp; <font color="#ff9900">配置php.ini</font></div>
<div>&nbsp;&nbsp;&nbsp;<font color="#0000ff">A.找到</font><font face="宋体"><font color="#0000ff">extension_dir设置为 "d:"apache2"php"ext"</font>绝对路径，否则有些环境中会出错。</font></div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div>&nbsp;&nbsp; <font color="#0000ff">b.打开功能扩展</font></div>
<div><font face="宋体">搜索以下行，把前面的分号删除。比如</font></div>
<div><font face="宋体">&#8220;;extension=php_mysql.dll&#8221;改为&#8220;<font face="宋体">extension=php_mysql.dll<br />
</font>&#8221;<br />
</font></div>
<div><font face="宋体">#下面两行为mysql5必备，记得php_mysqli.dll必须加载，否则连不上。</font></div>
<div><font face="宋体">extension=php_mysql.dll&nbsp;&nbsp;</font></div>
<div><font face="宋体">extension=php_mysqli.dll</font></div>
<div>&nbsp;</div>
<div>#php连sql server，有用到的就设置一下</div>
<div><font face="宋体">extension=php_mssql.dll</font></div>
<div><font face="宋体"><br />
#curl功能扩展，想用php写些脚本处理远程服务期的响应消息的可以打开</font></div>
<div>extension=php_curl.dll</div>
<div>&nbsp;</div>
<div>#GD库安装，此功能打开可用数据库以二进制存储图片<br />
extension=php_gd2.dll</div>
<div>&nbsp;</div>
<div>#东亚语系必备，增加字符处理速度<br />
extension=php_mbstring.dll</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp; <font color="#0000ff">C.实用功能自定义配置</font></div>
<div>&nbsp;</div>
<div><font color="#000000">#session的存储目录。如果有内存虚拟硬盘，可以把用到的暂存处理目录都设置到</font></div>
<div><font color="#000000">内存虚拟盘中进一步提高服务器响应速度。</font></div>
<div>&nbsp; &nbsp;<font color="#0000ff">session.save_path = D:/apache2/htdocs/php_session</font><font color="#0000ff">&nbsp;</font></div>
<div>&nbsp;</div>
<div><font color="#000000" face="宋体">#这个是每个脚本运行的最长时间，可以自己修改加长，单位秒</font></div>
<div><font color="#0000ff"><font face="宋体"><font color="#0000ff"><font face="宋体">max_execution_time = 30</font></font></font></font></div>
<p><font color="#0000ff"><font face="宋体"><font color="#000000">#这是每个脚本可以消耗的时间，单位也是秒<br />
</font>max_input_time = 60</font></font></p>
<p><font color="#000000">#这个是脚本运行最大消耗的内存，最好设为16M以上，有的程序要求，比如openads</font></p>
<p><font color="#0000ff"><font face="宋体">memory_limit = 16M</font></font></p>
<p><font color="#000000" face="宋体">#上载文件的最大许可大小，一般post大小&gt;upload_max_filesize。比如我的设置：</font></p>
<p><font color="#0000ff"><font color="#0000ff"><font face="宋体">post_max_size = 300M</font></font></font></p>
<p><font color="#0000ff"><font face="宋体">upload_max_filesize = 250M</font></font></p>
<p><font color="#000000">6.至此，配置完成大半。</font></p>
<p><font color="#000000">mysql与zend只要按需安装即可。装完后重启apache服务器即可。</font></p>
<p><font color="#000000">7.最后推荐个好东西，apache的monitor.exe，可以控制apache、myql、IIS、sql server等服务器开关。好东西，我找了挺久的。感谢原作者，抱歉忘了大名</font></p>
<p><font color="#0000ff"><a href="http://www.1thz.cn/apachemonitor.exe">http://www.1thz.cn/apachemonitor.exe</a></font></p>
<div>&nbsp;&nbsp;</div>
<div>8.如果您对服务器性能要求很高，我这里推荐您一个非常棒的平台组合。lighttpd可以取代apache，更轻，性能更优秀。 PostPre SQL 取代 Mysql，极其强大的开源数据库，完全满足企业商务级数据库需求。</div>
</div>
<img src ="http://www.blogjava.net/spark/aggbug/304781.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spark/" target="_blank">空空</a> 2009-12-04 15:35 <a href="http://www.blogjava.net/spark/archive/2009/12/04/304781.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用dom4j的xPath解析XML(转)</title><link>http://www.blogjava.net/spark/archive/2009/10/19/298855.html</link><dc:creator>空空</dc:creator><author>空空</author><pubDate>Mon, 19 Oct 2009 07:11:00 GMT</pubDate><guid>http://www.blogjava.net/spark/archive/2009/10/19/298855.html</guid><wfw:comment>http://www.blogjava.net/spark/comments/298855.html</wfw:comment><comments>http://www.blogjava.net/spark/archive/2009/10/19/298855.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spark/comments/commentRss/298855.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spark/services/trackbacks/298855.html</trackback:ping><description><![CDATA[books.xml:<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
<span style="color: rgb(0,0,255)">&lt;books&gt;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &lt;!--This is a test for dom4j, jakoes, 2007.7.19--&gt;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &lt;book show="yes" url="lucene.net"&gt;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;title id="456"&gt;Lucene Studing&lt;/title&gt;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &lt;/book&gt;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &lt;book show="yes" url="dom4j.com"&gt;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;title id="123"&gt;Dom4j Tutorials&lt;/title&gt;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &lt;/book&gt;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &lt;book show="no" url="spring.org"&gt;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;title id="789"&gt;Spring in Action&lt;/title&gt;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &lt;/book&gt;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &lt;owner&gt;O'Reilly&lt;/owner&gt;</span><br />
<span style="color: rgb(0,0,255)">&lt;/books&gt;</span><br />
<br />
下面我们使用dom4j的xPath来解析：<br />
<br />
segment of ParseXML.java:<br />
<br />
&nbsp;&nbsp;&nbsp; <span style="color: rgb(0,0,255)">public void parseBooks(){</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SAXReader reader = new SAXReader();</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try {</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Document doc = reader.read("books.xml");</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Node root = doc.selectSingleNode("/books");</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; List list = root.selectNodes("book[@url='dom4j.com']");</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(Object o:list){</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Element e = (Element) o;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; String show=e.attributeValue("show");</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println("show = " + show);</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } catch (Exception e) {</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; }</span><br />
<br />
<font size="2">&nbsp; Document doc = reader.read("books.xml");的意思是加载XML文档，此是可以用doc.asXML()来查看，它将打印整个xml文档。<br />
<br />
</font><font size="2">&nbsp; Node root = doc.selectSingleNode("/books");是读取刚才加载的xml文档内的books节点下的所有内容，对于本例也是整个xml文档。<br />
&nbsp; 当然我们也可以加载/books下的某一个节点，如：book节点<br />
Node</font> <font size="2">root</font> <font size="2">= doc.selectSingleNode("/books/book");<br />
或：</font><font size="2">Node</font> <font size="2">root</font> <font size="2">= doc.selectSingleNode("/books/*");<br />
注意：如果有多个book节点，它只会读取第一个<br />
</font><font size="2">root.asXML()将打印：<br />
<span style="color: rgb(0,0,255)">&lt;book show="yes" url="lucene.net"&gt;</span><br />
<span style="color: rgb(0,0,255)">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;title id="456"&gt;Lucene Studing&lt;/title&gt;</span><br />
<span style="color: rgb(0,0,255)">&lt;/book&gt;</span><br />
<br />
&nbsp; 既然加载了这么多，那我怎么精确的得到我想要的节点呢，别急，看下面：<br />
</font><font size="2">List list = root.selectNodes("book[@url='dom4j.com']");<br />
它的意思就是读取books节点下的</font><font size="2">book节点，且book的节点的url属性为</font><font size="2">dom4j.com<br />
为什么使用list来接收呢，如果有两个book节点，且它们的url属性都为dom4j.com，此时就封闭到list里了。<br />
<br />
&nbsp; 如果想读取books下的所有book节点，可以这样：<br />
List list = root.selectNodes("book");<br />
<br />
&nbsp; 如果想读取books节点下的book节点下的title节点，可以这样：<br />
List list2 = root.selectNodes("book[@url='dom4j.com']/title[@id='123']");<br />
<br />
&nbsp; 注意：</font><font size="2">selectNodes()参数的格式：<br />
&nbsp; 节点名[@属性名='属性值']，如：</font><font size="2">book[@url='dom4j.com']<br />
&nbsp; 如果有多个节点，用&#8220;/&#8221;分开，如：</font><font size="2">book[@url='dom4j.com']/title[@id='123']<br />
<br />
&nbsp; 最近就是读取封闭在List里的内容了，可以用Node来读取，也可以用Element来转换。<br />
</font><font size="2">attributeValue("属性")是读取该节点的属性值<br />
getText()是读取节点的的内容。<br />
</font>
 <img src ="http://www.blogjava.net/spark/aggbug/298855.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spark/" target="_blank">空空</a> 2009-10-19 15:11 <a href="http://www.blogjava.net/spark/archive/2009/10/19/298855.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读取struts配置文件的路径问题</title><link>http://www.blogjava.net/spark/archive/2009/09/28/296776.html</link><dc:creator>空空</dc:creator><author>空空</author><pubDate>Mon, 28 Sep 2009 06:39:00 GMT</pubDate><guid>http://www.blogjava.net/spark/archive/2009/09/28/296776.html</guid><wfw:comment>http://www.blogjava.net/spark/comments/296776.html</wfw:comment><comments>http://www.blogjava.net/spark/archive/2009/09/28/296776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spark/comments/commentRss/296776.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spark/services/trackbacks/296776.html</trackback:ping><description><![CDATA[今天测试别人的程序，发现struts的配置文件出了问题，主要有两个（以前没用过struts1，网上很多人的解答也对不上），<br />
<br />
<span style="color: red">一个是web.xml文件中的struts配置文件路径的写法问题，解决办法是在struts配置文件路径前加上"/"</span><br />
&lt;init-param&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;param-name&gt;config&lt;/param-name&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;param-value&gt;<span style="color: red"><strong>/</strong></span><span style="background-color: yellow">struts_test.xml</span>&lt;/param-value&gt;<br />
&nbsp;&nbsp;&lt;/init-param&gt;<br />
抛的异常如下：<br />
2009-9-28 13:33:53 org.apache.struts.action.ActionServlet handleConfigException<br />
严重: Parsing error processing resource path struts_test.xml<br />
java.net.MalformedURLException: Path struts_test.xml does not start with a "/" c<br />
haracter<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.ApplicationContext.getResource(ApplicationCo<br />
ntext.java:473)<br />
<br />
<br />
<span style="color: red">一个是web.xml中的struts文件的路径，struts配置文件应该是放在class目录下，比如src的根目录下，<br />
</span><span style="color: red">配置就是&lt;param-value&gt;<strong>/</strong><span style="background-color: yellow">struts_test.xml</span>&lt;/param-value&gt;，而不是WEB-INF中的路径。</span><br />
<br />
严重: &nbsp; Servlet &nbsp; /Message &nbsp; threw &nbsp; load() &nbsp; exception <br />
javax.servlet.UnavailableException: &nbsp; Missing &nbsp; configuration &nbsp; resource &nbsp; for &nbsp; path &nbsp; /WEB-INF/struts-config.xml <br />
at &nbsp; org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:732) <br />
at &nbsp; org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:687) <br />
at &nbsp; org.apache.struts.action.ActionServlet.init(ActionServlet.java:333) <br />
<img src ="http://www.blogjava.net/spark/aggbug/296776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spark/" target="_blank">空空</a> 2009-09-28 14:39 <a href="http://www.blogjava.net/spark/archive/2009/09/28/296776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 实现ftp上传下载(转)</title><link>http://www.blogjava.net/spark/archive/2009/09/22/295975.html</link><dc:creator>空空</dc:creator><author>空空</author><pubDate>Tue, 22 Sep 2009 03:02:00 GMT</pubDate><guid>http://www.blogjava.net/spark/archive/2009/09/22/295975.html</guid><wfw:comment>http://www.blogjava.net/spark/comments/295975.html</wfw:comment><comments>http://www.blogjava.net/spark/archive/2009/09/22/295975.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/spark/comments/commentRss/295975.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spark/services/trackbacks/295975.html</trackback:ping><description><![CDATA[<table style="width: 820px; height: 7137px; background-color: #f8fff0" cellspacing="2" cellpadding="2" width="820" border="0">
    <tbody>
        <tr>
            <td>
            <p>package com.why.ftp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            import java.io.DataInputStream;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            import java.io.File;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            import java.io.FileInputStream;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            import java.io.FileOutputStream;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            import java.io.IOException;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            import java.io.OutputStream;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            import java.util.ArrayList;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            import java.util.List;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            import java.util.StringTokenizer;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            import sun.net.TelnetInputStream;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            import sun.net.TelnetOutputStream;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            import sun.net.ftp.FtpClient;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            /**&nbsp;&nbsp;&nbsp; <br />
            &nbsp;* ftp上传，下载&nbsp;&nbsp;&nbsp; <br />
            &nbsp;* @author why 2009-07-30&nbsp;&nbsp;&nbsp; <br />
            &nbsp;*&nbsp;&nbsp;&nbsp; <br />
            &nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; <br />
            public class FtpUtil {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; private String ip = "";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; private String username = "";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; private String password = "";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; private int port = -1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; private String path = "";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; FtpClient ftpClient = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; OutputStream os = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; FileInputStream is = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; public FtpUtil(String serverIP, String username, String password) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.ip = serverIP;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.username = username;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.password = password;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; public FtpUtil(String serverIP, int port, String username, String password) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.ip = serverIP;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.username = username;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.password = password;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.port = port;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; /**&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 连接ftp服务器&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @throws IOException&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; public boolean connectServer(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient = new FtpClient();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(this.port != -1){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.openServer(this.ip,this.port);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.openServer(this.ip);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.login(this.username, this.password);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (this.path.length() != 0){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.cd(this.path);// path是ftp服务下主目录的子目录&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.binary();// 用2进制上传、下载&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("已登录到\"" + ftpClient.pwd() + "\"目录");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch (IOException e){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; /**&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 断开与ftp服务器连接&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @throws IOException&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; public boolean closeServer(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (is != null) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (os != null) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ftpClient != null) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.closeServer();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("已从服务器断开");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(IOException e){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; /**&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 检查文件夹在当前目录下是否存在&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param dir&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @return&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; private boolean isDirExist(String dir){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String pwd = "";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pwd = ftpClient.pwd();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.cd(dir);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.cd(pwd);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(Exception e){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; /**&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 在当前目录下创建文件夹&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param dir&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @return&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @throws Exception&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; private boolean createDir(String dir){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.ascii();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringTokenizer s = new StringTokenizer(dir, "/"); //sign&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s.countTokens();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String pathName = ftpClient.pwd();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(s.hasMoreElements()){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pathName = pathName + "/" + (String) s.nextElement();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.sendServer("MKD " + pathName + "\r\n");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception e) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.readServerResponse();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.binary();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch (IOException e1){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e1.printStackTrace();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; /**&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * ftp上传&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 如果服务器段已存在名为filename的文件夹，该文件夹中与要上传的文件夹中同名的文件将被替换&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @param filename 要上传的文件（或文件夹）名&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @return&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @throws Exception&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; public boolean upload(String filename){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String newname = "";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(filename.indexOf("/") &gt; -1){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newname = filename.substring(filename.lastIndexOf("/") + 1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newname = filename;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return upload(filename, newname);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; /**&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * ftp上传&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 如果服务器段已存在名为newName的文件夹，该文件夹中与要上传的文件夹中同名的文件将被替换&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName 要上传的文件（或文件夹）名&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @param newName 服务器段要生成的文件（或文件夹）名&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @return&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; public boolean upload(String fileName, String newName){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String savefilename = new String(fileName.getBytes("ISO-8859-1"), "GBK");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File file_in = new File(savefilename);//打开本地待长传的文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!file_in.exists()){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("此文件或文件夹[" + file_in.getName() + "]有误或不存在!");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(file_in.isDirectory()){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; upload(file_in.getPath(),newName,ftpClient.pwd());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uploadFile(file_in.getPath(),newName);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(is != null){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(os != null){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(Exception e){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println("Exception e in Ftp upload(): " + e.toString());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }finally{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(is != null){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(os != null){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch(IOException e){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; /**&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 真正用于上传的方法&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @param newName&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @param path&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @throws Exception&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; private void upload(String fileName, String newName,String path) throws Exception{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String savefilename = new String(fileName.getBytes("ISO-8859-1"), "GBK");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File file_in = new File(savefilename);//打开本地待长传的文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!file_in.exists()){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception("此文件或文件夹[" + file_in.getName() + "]有误或不存在!");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(file_in.isDirectory()){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!isDirExist(newName)){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; createDir(newName);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.cd(newName);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File sourceFile[] = file_in.listFiles();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i = 0; i &lt; sourceFile.length; i++){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!sourceFile[i].exists()){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(sourceFile[i].isDirectory()){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.upload(sourceFile[i].getPath(),sourceFile[i].getName(),path+"/"+newName);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.uploadFile(sourceFile[i].getPath(),sourceFile[i].getName());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uploadFile(file_in.getPath(),newName);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpClient.cd(path);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; /**&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; upload 上传文件&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param filename 要上传的文件名&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param newname 上传后的新文件名&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @return -1 文件不存在 &gt;=0 成功上传，返回文件的大小&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @throws Exception&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; public long uploadFile(String filename, String newname) throws Exception{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long result = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TelnetOutputStream os = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileInputStream is = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.io.File file_in = new java.io.File(filename);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!file_in.exists())&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os = ftpClient.put(newname);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = file_in.length();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is = new FileInputStream(file_in);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] bytes = new byte[1024];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int c;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while((c = is.read(bytes)) != -1){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.write(bytes, 0, c);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }finally{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(is != null){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(os != null){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; /**&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 从ftp下载文件到本地&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param filename 服务器上的文件名&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param newfilename 本地生成的文件名&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @return&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @throws Exception&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; public long downloadFile(String filename, String newfilename){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long result = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TelnetInputStream is = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileOutputStream os = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is = ftpClient.get(filename);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.io.File outfile = new java.io.File(newfilename);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os = new FileOutputStream(outfile);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] bytes = new byte[1024];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int c;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((c = is.read(bytes)) != -1) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.write(bytes, 0, c);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = result + c;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }catch (IOException e){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }finally{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(is != null){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; is.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(os != null){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; /**&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 取得相对于当前连接目录的某个目录下所有文件列表&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param path&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @return&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; public List getFileList(String path){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List list = new ArrayList();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataInputStream dis;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dis = new DataInputStream(ftpClient.nameList(this.path + path));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String filename = "";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while((filename = dis.readLine()) != null){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list.add(filename);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return list;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; public static void main(String[] args){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FtpUtil ftp = new FtpUtil("133.224.202.2","tstbill","tstbill");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftp.connectServer();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean result = ftp.upload("C:/test_why", "test_why/test");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(result?"上传成功！":"上传失败！");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List list = ftp.getFileList("test_why/test");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;list.size();i++){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String name = list.get(i).toString();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(name);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftp.closeServer();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FTP远程命令列表&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; USER&nbsp;&nbsp;&nbsp; PORT&nbsp;&nbsp;&nbsp; RETR&nbsp;&nbsp;&nbsp; ALLO&nbsp;&nbsp;&nbsp; DELE&nbsp;&nbsp;&nbsp; SITE&nbsp;&nbsp;&nbsp; XMKD&nbsp;&nbsp;&nbsp; CDUP&nbsp;&nbsp;&nbsp; FEAT&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PASS&nbsp;&nbsp;&nbsp; PASV&nbsp;&nbsp;&nbsp; STOR&nbsp;&nbsp;&nbsp; REST&nbsp;&nbsp;&nbsp; CWD&nbsp;&nbsp;&nbsp;&nbsp; STAT&nbsp;&nbsp;&nbsp; RMD&nbsp;&nbsp;&nbsp;&nbsp; XCUP&nbsp;&nbsp;&nbsp; OPTS&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACCT&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp; APPE&nbsp;&nbsp;&nbsp; RNFR&nbsp;&nbsp;&nbsp; XCWD&nbsp;&nbsp;&nbsp; HELP&nbsp;&nbsp;&nbsp; XRMD&nbsp;&nbsp;&nbsp; STOU&nbsp;&nbsp;&nbsp; AUTH&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; REIN&nbsp;&nbsp;&nbsp; STRU&nbsp;&nbsp;&nbsp; SMNT&nbsp;&nbsp;&nbsp; RNTO&nbsp;&nbsp;&nbsp; LIST&nbsp;&nbsp;&nbsp; NOOP&nbsp;&nbsp;&nbsp; PWD&nbsp;&nbsp;&nbsp;&nbsp; SIZE&nbsp;&nbsp;&nbsp; PBSZ&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QUIT&nbsp;&nbsp;&nbsp; MODE&nbsp;&nbsp;&nbsp; SYST&nbsp;&nbsp;&nbsp; ABOR&nbsp;&nbsp;&nbsp; NLST&nbsp;&nbsp;&nbsp; MKD&nbsp;&nbsp;&nbsp;&nbsp; XPWD&nbsp;&nbsp;&nbsp; MDTM&nbsp;&nbsp;&nbsp; PROT&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话，所有FTP命令都要加上\r\n&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpclient.sendServer("XMKD /test/bb\r\n"); //执行服务器上的FTP命令&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpclient.readServerResponse一定要在sendServer后调用&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nameList("/test")获取指目录下的文件列表&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XMKD建立目录，当目录存在的情况下再次创建目录时报错&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XRMD删除目录&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DELE删除文件&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; <br />
            }&nbsp;&nbsp;</p>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>下面是FtpClient类的一些介绍：</p>
<p>sun.net.ftp.FtpClient.，该类库主要提供了用于建立FTP连接的类。利用这些类的方法，编程人员可以远程登录到FTP服务器，列举该服务器上的目录，设置传输协议，以及传送文件。FtpClient类涵盖了几乎所有FTP的功能，FtpClient的实例变量保存了有关建立"代理"的各种信息。下面给出了这些实例变量：</p>
<p>　　public static boolean useFtpProxy<br />
　　这个变量用于表明FTP传输过程中是否使用了一个代理，因此，它实际上是一个标记，此标记若为TRUE，表明使用了一个代理主机。</p>
<p>　　public static String ftpProxyHost<br />
　　此变量只有在变量useFtpProxy为TRUE时才有效，用于保存代理主机名。</p>
<p>　　public static int ftpProxyPort<br />
　　此变量只有在变量useFtpProxy为TRUE时才有效，用于保存代理主机的端口地址。</p>
<p>　　FtpClient有三种不同形式的构造函数，如下所示：</p>
<p>　　1、public FtpClient(String hostname,int port)<br />
　　　此构造函数利用给出的主机名和端口号建立一条FTP连接。</p>
<p>　　2、public FtpClient(String hostname)<br />
　　此构造函数利用给出的主机名建立一条FTP连接，使用默认端口号。</p>
<p>　　3、FtpClient()<br />
　　此构造函数将创建一FtpClient类，但不建立FTP连接。这时，FTP连接可以用openServer方法建立。</p>
<p>　　一旦建立了类FtpClient，就可以用这个类的方法来打开与FTP服务器的连接。类ftpClient提供了如下两个可用于打开与FTP服务器之间的连接的方法。</p>
<p>　　public void openServer(String hostname)<br />
　　这个方法用于建立一条与指定主机上的FTP服务器的连接，使用默认端口号。</p>
<p>　　public void openServer(String host,int port)<br />
　　这个方法用于建立一条与指定主机、指定端口上的FTP服务器的连接。</p>
<p>　　打开连接之后，接下来的工作是注册到FTP服务器。这时需要利用下面的方法。</p>
<p>　　public void login(String username，String password)<br />
　　此方法利用参数username和password登录到FTP服务器。使用过Intemet的用户应该知道，匿名FTP服务器的登录用户名为anonymous，密码一般用自己的电子邮件地址。</p>
<p>　　下面是FtpClient类所提供的一些控制命令。</p>
<p>　　public void cd(String remoteDirectory)：该命令用于把远程系统上的目录切换到参数remoteDirectory所指定的目录。<br />
　　public void cdUp()：该命令用于把远程系统上的目录切换到上一级目录。<br />
　　public String pwd()：该命令可显示远程系统上的目录状态。<br />
　　public void binary()：该命令可把传输格式设置为二进制格式。<br />
　　public void ascii()：该命令可把传输协议设置为ASCII码格式。<br />
　　public void rename(String string，String string1)：该命令可对远程系统上的目录或者文件进行重命名操作。</p>
<p>　　除了上述方法外，类FtpClient还提供了可用于传递并检索目录清单和文件的若干方法。这些方法返回的是可供读或写的输入、输出流。下面是其中一些主要的方法。</p>
<p>　　public TelnetInputStream list()<br />
　　返回与远程机器上当前目录相对应的输入流。</p>
<p>　　public TelnetInputStream get(String filename)<br />
　　获取远程机器上的文件filename，借助TelnetInputStream把该文件传送到本地。</p>
<p>　　public TelnetOutputStream put(String filename)<br />
　　以写方式打开一输出流，通过这一输出流把文件filename传送到远程计算机</p>
<img src ="http://www.blogjava.net/spark/aggbug/295975.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spark/" target="_blank">空空</a> 2009-09-22 11:02 <a href="http://www.blogjava.net/spark/archive/2009/09/22/295975.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javax.naming.NameNotFoundException: Name jdbc is not bound in this Context</title><link>http://www.blogjava.net/spark/archive/2009/09/08/294339.html</link><dc:creator>空空</dc:creator><author>空空</author><pubDate>Tue, 08 Sep 2009 09:47:00 GMT</pubDate><guid>http://www.blogjava.net/spark/archive/2009/09/08/294339.html</guid><wfw:comment>http://www.blogjava.net/spark/comments/294339.html</wfw:comment><comments>http://www.blogjava.net/spark/archive/2009/09/08/294339.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spark/comments/commentRss/294339.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spark/services/trackbacks/294339.html</trackback:ping><description><![CDATA[在tomcat中发布web项目，可能是因为spring中配置了jndi（只配置了jndi，其他的有工具包封装了）。<br />
启动的时候报错（在项目目录下，在tomcat中配置context指向项目目录就没问题，打包发布到<br />
tomcat就报错了），抛的异常是：<br />
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context<br />
<br />
在web.xml中添加配置如下：<br />
&lt;resource-ref&gt;<br />
&nbsp;&nbsp;&lt;description&gt;DB Connection&lt;/description&gt;<br />
&nbsp;&nbsp;&lt;res-ref-name&gt;jdbc/test&lt;/res-ref-name&gt;<br />
&nbsp;&nbsp;&lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />
&nbsp;&nbsp;&lt;res-auth&gt;Container&lt;/res-auth&gt;<br />
&nbsp;&lt;/resource-ref&gt;<br />
<img src ="http://www.blogjava.net/spark/aggbug/294339.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spark/" target="_blank">空空</a> 2009-09-08 17:47 <a href="http://www.blogjava.net/spark/archive/2009/09/08/294339.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Seam中的transaction配置问题</title><link>http://www.blogjava.net/spark/archive/2009/09/07/294203.html</link><dc:creator>空空</dc:creator><author>空空</author><pubDate>Mon, 07 Sep 2009 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/spark/archive/2009/09/07/294203.html</guid><wfw:comment>http://www.blogjava.net/spark/comments/294203.html</wfw:comment><comments>http://www.blogjava.net/spark/archive/2009/09/07/294203.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/spark/comments/commentRss/294203.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spark/services/trackbacks/294203.html</trackback:ping><description><![CDATA[在组件的实现中我只用了数据库的查询，没有在Seam中设置事务，居然报错，<br />
需要在components.xml 中设置一下transaction,先引入命名空间：<br />
&nbsp;xmlns:transaction="http://jboss.com/products/seam/transaction"<br />
&nbsp;http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.0.xsd<br />
<br />
再添加下列设置：<br />
&nbsp;&lt;core:init transaction-management-enabled="false"/&gt;<br />
&nbsp;&lt;transaction:no-transaction /&gt;<br />
<br />
报的异常如下：<br />
ERROR SeamPhaseListener:120 - uncaught exception<br />
java.lang.IllegalStateException: Could not start transaction<br />
at org.jboss.seam.jsf.SeamPhaseListener.begin(SeamPhaseListener.java:592)<br />
at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsBeforePhase(SeamPhaseListener.java:323)<br />
at org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseListener.java:140)<br />
at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:114)<br />
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:222)<br />
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)<br />
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)<br />
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)<br />
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br />
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)<br />
at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)<br />
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)<br />
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)<br />
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)<br />
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)<br />
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)<br />
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)<br />
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)<br />
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)<br />
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)<br />
at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)<br />
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)<br />
at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)<br />
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)<br />
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)<br />
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br />
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br />
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)<br />
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)<br />
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)<br />
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)<br />
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)<br />
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)<br />
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)<br />
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)<br />
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)<br />
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)<br />
at java.lang.Thread.run(Thread.java:595)<br />
Caused by: java.lang.UnsupportedOperationException: no transaction<br />
at org.jboss.seam.transaction.NoTransaction.begin(NoTransaction.java:36)<br />
at org.jboss.seam.jsf.SeamPhaseListener.begin(SeamPhaseListener.java:587)<br />
... 37 more<br />
11:11:07,671 ERROR SeamPhaseListener:127 - swallowing exception<br />
<br />
<img src ="http://www.blogjava.net/spark/aggbug/294203.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spark/" target="_blank">空空</a> 2009-09-07 17:46 <a href="http://www.blogjava.net/spark/archive/2009/09/07/294203.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>faces-config.xml格式问题</title><link>http://www.blogjava.net/spark/archive/2009/09/03/293715.html</link><dc:creator>空空</dc:creator><author>空空</author><pubDate>Thu, 03 Sep 2009 03:13:00 GMT</pubDate><guid>http://www.blogjava.net/spark/archive/2009/09/03/293715.html</guid><wfw:comment>http://www.blogjava.net/spark/comments/293715.html</wfw:comment><comments>http://www.blogjava.net/spark/archive/2009/09/03/293715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spark/comments/commentRss/293715.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spark/services/trackbacks/293715.html</trackback:ping><description><![CDATA[在使用myfaces-jsf的时候，如果配置的faces-config.xml在服务器启动时报错，需要修改faces-config.xml的头部内容如下：<br />
&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;!DOCTYPE faces-config <br />
PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"&gt;<br />
&lt;faces-config&gt;<br />
<br />
问题如下：<br />
<br />
<p>严重: Parse Error at line 2 column 14: Document is invalid: no grammar found.<br />
org.xml.sax.SAXParseException: Document is invalid: no grammar found.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSA<br />
ParseException(ErrorHandlerWrapper.java:236)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Er<br />
orHandlerWrapper.java:172)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError<br />
XMLErrorReporter.java:382)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError<br />
XMLErrorReporter.java:316)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.sca<br />
StartElement(XMLNSDocumentScannerImpl.java:177)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSC<br />
ntentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerIm<br />
l$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerIm<br />
l.scanDocument(XMLDocumentFragmentScannerImpl.java:368)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(<br />
ML11Configuration.java:834)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(<br />
ML11Configuration.java:764)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser<br />
java:148)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(A<br />
stractSAXParser.java:1242)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.commons.digester.Digester.parse(Digester.java:1572)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshal<br />
erImpl.getFacesConfig(DigesterFacesConfigUnmarshallerImpl.java:183)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.myfaces.config.FacesConfigurator.feedClassloaderConfigura<br />
ions(FacesConfigurator.java:251)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.myfaces.config.FacesConfigurator.configure(FacesConfigura<br />
or.java:129)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.myfaces.webapp.StartupServletContextListener.initFaces(St<br />
rtupServletContextListener.java:69)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.myfaces.webapp.StartupServletContextListener.contextIniti<br />
lized(StartupServletContextListener.java:52)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardContext.listenerStart(StandardConte<br />
t.java:3764)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardContext.start(StandardContext.java:<br />
216)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBas<br />
.java:760)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:7<br />
0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:71<br />
)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:49<br />
)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.jav<br />
:311)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecyc<br />
eSupport.java:120)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:44<br />
)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardService.start(StandardService.java:<br />
48)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.core.StandardServer.start(StandardServer.java:70<br />
)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.Catalina.start(Catalina.java:552)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl<br />
java:39)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce<br />
sorImpl.java:25)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.lang.reflect.Method.invoke(Method.java:585)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)</p>
<img src ="http://www.blogjava.net/spark/aggbug/293715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spark/" target="_blank">空空</a> 2009-09-03 11:13 <a href="http://www.blogjava.net/spark/archive/2009/09/03/293715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle域用户安装</title><link>http://www.blogjava.net/spark/archive/2009/09/02/293641.html</link><dc:creator>空空</dc:creator><author>空空</author><pubDate>Wed, 02 Sep 2009 10:01:00 GMT</pubDate><guid>http://www.blogjava.net/spark/archive/2009/09/02/293641.html</guid><wfw:comment>http://www.blogjava.net/spark/comments/293641.html</wfw:comment><comments>http://www.blogjava.net/spark/archive/2009/09/02/293641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/spark/comments/commentRss/293641.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/spark/services/trackbacks/293641.html</trackback:ping><description><![CDATA[<p>问题：<br />
如果在域中安装Oracle 10G，</p>
<p>在DataBase Configuration Assisant安装的时候，会报一个错误，提示：</p>
<p><br />
ORA-24324:未初始化服务句柄<br />
ORA-24323:不允许此值<br />
ORA-28547:连接服务器失败,可能是Oracle Net管理错误</p>
<p><br />
这是因为，用域用户登录主机时，Oracle会把主机在域当中的名字当作Host名。</p>
<p>解决办法：</p>
<p>1.将sqlnet.ora文件中的<br />
SQLNET_AUTHENTICATION_SERVICES= (NTS) 修改为 SQLNET_AUTHENTICATION_SERVICES= (NONE)</p>
<p><br />
2.将listener.ora文件中LISTENER配置节中的主机名用IP地址代替<br />
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))</p>
<p>重新安装即可</p>
<img src ="http://www.blogjava.net/spark/aggbug/293641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/spark/" target="_blank">空空</a> 2009-09-02 18:01 <a href="http://www.blogjava.net/spark/archive/2009/09/02/293641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>