谈判Word文档下载推荐.docx
- 文档编号:20853541
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:24
- 大小:99.98KB
谈判Word文档下载推荐.docx
《谈判Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《谈判Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
此变量只有在变量useFtpProxy为TRUE时才有效,用于保存代理主机的端口地址。
FtpClient有三种不同形式的构造函数,如下所示:
1、publicFtpClient(Stringhostname,intport)
此构造函数利用给出的主机名和端口号建立一条FTP连接。
2、publicFtpClient(Stringhostname)
此构造函数利用给出的主机名建立一条FTP连接,使用默认端口号。
3、FtpClient()
此构造函数将创建一FtpClient类,但不建立FTP连接。
这时,FTP连接可以用openServer方法建立。
一旦建立了类FtpClient,就可以用这个类的方法来打开与FTP服务器的连接。
类ftpClient提供了如下两个可用于打开与FTP服务器之间的连接的方法。
publicvoidopenServer(Stringhostname)
这个方法用于建立一条与指定主机上的FTP服务器的连接,使用默认端口号。
publicvoidopenServer(Stringhost,intport)
这个方法用于建立一条与指定主机、指定端口上的FTP服务器的连接。
打开连接之后,接下来的工作是注册到FTP服务器。
这时需要利用下面的方法。
publicvoidlogin(Stringusername,Stringpassword)
此方法利用参数username和password登录到FTP服务器。
使用过Intemet的用户应该知道,匿名FTP服务器的登录用户名为anonymous,密码一般用自己的电子邮件地址。
下面是FtpClient类所提供的一些控制命令。
publicvoidcd(StringremoteDirectory)
该命令用于把远程系统上的目录切换到参数remoteDirectory所指定的目录。
publicvoidcdUp():
该命令用于把远程系统上的目录切换到上一级目录。
publicStringpwd():
该命令可显示远程系统上的目录状态。
publicvoidbinary():
该命令可把传输格式设置为二进制格式。
publicvoidascii():
该命令可把传输协议设置为ASCII码格式。
publicvoidrename(Stringstring,Stringstring1)
该命令可对远程系统上的目录或者文件进行重命名操作。
除了上述方法外,类FtpClient还提供了可用于传递并检索目录清单和文件的若干方法。
这些方法返回的是可供读或写的输入、输出流。
下面是其中一些主要的方法。
publicTelnetInputStreamlist()
返回与远程机器上当前目录相对应的输入流。
publicTelnetInputStreamget(Stringfilename)
获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地。
publicTelnetOutputStreamput(Stringfilename)
以写方式打开一输出流,通过这一输出流把文件filename传送到远程计算机。
三、设计一个FTP的客户端程序,实现文件上传下载功能
FTP的客户端程序设计主要有四个部分:
客户登录程序设计、FTP服务器目录浏览程序设计、FTP服务器目录更新程序设计、上传和下载文件程序设计。
而相应的操作流程为:
首先客户端程序先连接服务器,然后浏览或更新FTP服务器目录,选择文件进行下载或上传,进行文件数据传输,最后断开连接。
我们要注意,在下载文件和上传文件时,其数据流向是不同的;
而连接的断开也是由服务器程序执行的。
FTP客户端系统的系统结构(也包含在服务器端的部分处理过程),整个系统由图形界面、登录程序、浏览程序、上传下载程序四大模块组成。
图形界面又由登录界面和文件处理界面组成,它主要给用户提供所见即所得的交互手段。
登录程序通过用户提供的登录信息(包括FTP服务器IP,服务器应用程序端口号、用户名(ID)和密码)连接到服务器,并把信息反馈于登录界面。
浏览程序实现服务器和客户端文件目录的浏览。
上传下载程序主要完成文件的传输,是系统的核心模块。
Jbuilder9提供的FTP控件已经对其进行了类封装,因而对用户而言它是透明的,不必再去编程解释响应消息等,这就是控件的好处。
这样使用JBuilder9,就节约了大量的开发时间。
即使对FTP不是很了解,都可以很快建立起一个FTP客户端程序来。
由于本程序只是FTP客户端,下面将分别对整个系统的图形界面、登录程序、浏览程序和上传下载程序四大模块的程序实现细节进行详细介绍。
1、系统的图形界面设计
系统的图形界面设计是关于连接FTP服务器界面和文件处理界面这二个界面的设计,它主要是为用户提供所见即所得的交互接口。
①主界面的设计
用户可以使用JBuilder9的ProjectWizard来创建工程。
工程文件扩展名为.jpx。
工程文件包含了工程中其他文件所在目录信息。
使用ProjectWizard的具体步骤如下:
选择File->
NewProiect菜单项;
在Name文本框中输入FTPClient;
单击Finish按钮。
然后使用ApplicationWizard向导创建应用程序,均选择默认值。
如图1所示:
图1
②连接FTP服务器界面的设计
连接FTP服务器界面的设计是在jPanel1的基础止设计实现的,增加了一些其他控件。
如图2所示:
图2
③文件处理界面的设计
文件处理界面的设计是在jPanel2的基础上实现的,增加了一些其他控件。
如图3所示:
图3
④界面设计的程序实现
Java是一个面向对象的程序语言,它使用了很多对象,在JBuilder9中使用的是JDK1.4库,它提供了很多的界面对象。
在本实例中,使用如下的对象和库。
packageftpclient;
//库声明
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importcom.borland.jbcl.layout.*;
importjava.beans.*;
importjava.io.*;
import.TelnetInputStream;
import.ftp.*;
importjava.lang.Object;
importjavax.swing.tree.DefaultMutableTreeNode;
importjavax.swing.tree.DefaultTreeModel;
importjavax.swing.JTextField;
importjavax.swing.JCheckBox;
importjavax.swing.tree.TreePath;
import.TelnetOutputStream;
importjava.util.Properties;
/**
*<p>
Title:
thisisstudy</p>
Description:
</p>
Copyright:
Copyright(c)2004</p>
***ghq***
*@version1.0
*/
publicclassFrame1extendsJFrame{
//对象说明
privateJPanelcontentPane;
privateJTextFieldjTextField1=newJTextField();
privateJTextFieldjTextField2=newJTextField();
privateJTextFieldjTextField3=newJTextField();
privateJCheckBoxjCheckbox1=newJCheckBox();
FtpClientftp=null;
JTabbedPanejTabbedPane1=newJTabbedPane();
JPaneljPanel1=newJPanel();
JPaneljPanel2=newJPanel();
PaneLayoutpaneLayout1=newPaneLayout();
XYLayoutxYLayout1=newXYLayout();
JLabeljLabel1=newJLabel();
JLabeljLabel2=newJLabel();
JLabeljLabel3=newJLabel();
JTextFieldjTextField4=newJTextField();
JLabeljLabel4=newJLabel();
BorderLayoutborderLayout1=newBorderLayout();
Boxbox1;
JPaneljPanel3=newJPanel();
JPaneljPanel4=newJPanel();
XYLayoutxYLayout2=newXYLayout();
BorderLayoutborderLayout2=newBorderLayout();
JScrollPanejScrollPane1=newJScrollPane();
JButtonjButton3=newJButton();
JButtonjButton4=newJButton();
JScrollPanejScrollPane2=newJScrollPane();
//定义树节点,模型和树视图
DefaultMutableTreeNoderoot1=newDefaultMutableTreeNode("
目录中没有文件"
);
DefaultTreeModelmodel1=newDefaultTreeModel(root1);
JTreejTree1=newJTree(model1);
JButtonjButton5=newJButton();
JLabelstatusLabel=newJLabel();
Listlist1=newList();
JScrollPanejScrollPane3=newJScrollPane();
JTextAreajTextArea1=newJTextArea();
JButtonjButton1=newJButton();
JButtonjButton2=newJButton();
JLabeljLabel5=newJLabel();
JLabeljLabel6=newJLabel();
}
2、登录程序
下面我们来说明一下利用FtpClient控件实现FTP客户端应用程序的登录功能。
要登录FTP服务器,一定要设置下面的参数:
hostname:
服务器的IP地址或主机名称,为字符串类型;
port:
服务器的通信端口,为int类型(一般而言,FTP的通信端口默认为21);
username:
用户的登录账号;
password:
用户的登录密码。
一般的使用办法是,直接使用构造方法创建一个FtpClient类对象(如果在构造FtpClient类对象时没有设置参数,则可以使用openServer方法来打开服务器端口),然后使用login方法来登录,并进行用户认证。
以下给出示例程序的源代码:
//登录程序:
voidjButton1_actionPerformed(ActionEvente)
//作用:
登录连接到FTP服务器。
voidjButton1_actionPerformed(ActionEvente){
intch;
Stringhostname=jTextField1.getText();
//如果已经打开了FTP服务器,则先关闭FTP文件服务器
try{
if(ftp!
=null)ftp.closeServer();
}
catch(IOExceptionex){
ex.printStackTrace();
//连接到服务器
statusLabel.setText("
正在连接,请等待....."
ftp=newFtpClient(hostname);
//登录Ftp服务器
ftp.login(jTextField2.getText(),jTextField3.getText());
//使用二进制协议
ftp.binary();
catch(FtpLoginExceptionex){
//没有主机的登录权限
无权限与主机:
"
+hostname+"
连接!
catch(IOExceptionex){
//连接主机失败
连接主机:
失败!
catch(SecurityExceptionex)
{
//用户或者密码可能不对
用户或者密码可能不对,无权限与主机:
//连接成功后的显示
statusLabel.setText("
成功!
//列表框需要重新刷新
ReloadList();
}
3、浏览程序
我们利用FtpClient控件可以实现FTP客户端应用程序的浏览功能,浏览功能的实现程序由浏览服务器端文件和浏览本地文件两部分组成。
①浏览服务器端的程序
当连接登录成功之后,可使用FtpClient控件的List()方法执行FTP服务器端上的目录浏览(List)功能,以取得FTP服务器默认的目录内容。
一般List方法会列出FTP端目录与文件的详细内容,包括创建文件日期,文件大小,目录与文件的名称等相关信息。
当然,FTP服务器端必须开放目录读取的权限,以允许连接登录及浏览目录,否则,Connect方法会执行失败。
而这个方法执行后的结果是TelnetInputStream数据流,本系统要把它显示在一个列表框中,还需要进行分解操作。
下面是对列表框进行操作的源程序代码:
//浏览程序:
privatevoidReloadList()
清空目录列表,调用List()方法获取文件列表。
privatevoidReloadList(){
StringBufferbuf=newStringBuffer();
//清空目录列表
list1.removeAll();
//调用List()方法得到目录表
TelnetInputStreamt=ftp.list();
t.setStickyCRLF(true);
//分解TelnetInputStream数据流
while((ch=t.read())>
=0){
if(ch=='
\n'
){
//向列表框添加分解得到的目录和文件
list1.add(getDIR(buf.toString()));
buf.setLength(0);
}
else{
buf.append((char)ch);
}
//完成后关闭TelnetInputStream数据流
t.close();
//刷新列表框的内容
list1.validate();
//Overriddensowecanexitwhenwindowisclosed
protectedvoidprocessWindowEvent(WindowEvente){
super.processWindowEvent(e);
if(e.getID()==WindowEvent.WINDOW_CLOSING){
System.exit(0);
publicStringgetDIR(Stringpath)
分解字符串得到目录和文件名
publicStringgetDIR(Stringpath){
StringDIRName;
//分解字符串得到目录和文件名
intbegin=55;
DIRName=path.substring(begin).trim();
returnDIRName;
通过对列表框的操作,可更新FTP服务器端的目录位置。
当双击列表框控件时,首先判断是否为目录(包括"
.."
或"
."
),若是,则根据相应的目录并使用FtpClient控件的cd方法来处理服务器端的当前目录,它将切换当前目录到指定的路径。
当cd方法成功后,由于FTP服务器端的当前目录内容变了,因此还需要使用ReloadList方法再重新浏览FTP服务器端目录内容,源程序代码如下:
voidlist1_mouseClicked(MouseEvente)
FTP服务器文件目录改变
voidlist1_mouseClicked(MouseEvente){
//单击列表框的操作
if(ftp==null)list1.removeAll();
if(list1.getRows()>
0){
//选择列表框中单击选中的内容
Stringdir=list1.getSelectedItem().trim();
try{
//如果是目录,则进入目录
ftp.cd(dir);
//列表框需要重新刷新
ReloadList();
jTextArea1.append("
进入目录:
"
jTextArea1.append(dir);
\n"
catch(IOExceptionex){
//否则,表明点击的内容是ftp上的一个文件
:
是一个文件\n"
②本地浏览程序
文件传输是一个双向的过程,它涉及到客户端和服务器之间数据流传输的问题,人们不仅需要把服务器上的文件下载到指定的文件下,同时也需要能把客户端本地的文件上传到服务器上。
本地浏览程序通过jTree1,jButton5和JFileChooser三种控件实现。
jTree1用于显示当前选择目录中的所有文件和目录,jButton5和JFileChooser组合在一起用于选择需要的目录。
其实现的源程序代码如下:
/浏览程序:
voidjButton5_actionPerformed(ActionEvente)
选择需要的本地文件目录
voidjButton5_actionPerformed(ActionEvente){
JFileChooserJFileCh=newJFileChooser();
//创建文件对话框
JFileCh.setFileSelectionMode(JFileCh
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 谈判