




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java语言程序设计 清华大学出版社 第8章输入输出流 2 一 文本文件的处理 1 File类2 FileReader类3 FileWriter类4 BufferedReader类 1 File类 1 所有对文件的操作都要使用File类 2 其构造 File 文件名 File 目录名 文件名 2 读取文本文件 while s buffin readLine null text append s n Filef newFile d jtest e txt fin newFileReader f buffin newBufferedReader fr 按行读取 5 例 读取文件 构造有读取文件功能的窗体类 classEWindowextendsFrameimplementsActionListener TextAreatext Buttonbutton BufferedReaderbuffin FileReaderfin EWindow 构造函数 super 流的读取 setSize 200 200 setVisible true 6 addWindowListener newWindowAdapter publicvoidwindowClosing WindowEvente setVisible false System exit 0 构造函数结束 text newTextArea 10 10 button newButton 读取 button addActionListener this setLayout newBorderLayout add text Center add South button 7 try while s buffin readLine null text append s n catch IOExceptionexp publicvoidactionPerformed ActionEvente Strings try Filef newFile e dd E2 html fin newFileReader f buffin newBufferedReader fin catch IOExceptione 窗体类结束 8 主程序 publicclassE publicstaticvoidmain Stringargs EWindoww newEWindow w pack 3 把文本框中内容写入文件 try fout newFileWriter hello txt buffout newBufferedWriter fout Stringstr text getText text为文本框buffout write str 0 str length buffout flush catch IOExceptionexp System out println haveproblem 刷新缓冲区强制写入 10 二 二进制文件的处理 文件对象的建立Filefp newFile file1 dat FileInputStream类用来打开一个输入文件FileOutputStream类用来打开一个输出文件 11 二 二进制文件的处理 FileInputStream类的常用方法 read 从流中读入数据close 关闭流FileOutputStream类的方法 write byteb intoff intlen 在数组b中 从off开始 写入len个字节的数据 二 二进制文件的处理 Filefile newFile d jtest test dat fileInput newFileInputStream file 注意 二进制文件必须按字节读取 见P236例8 1 bytebuffer newbyte 2056 intbytes fileInput read buffer 0 2056 str newString buffer 0 bytes 建立输入通道 完成读的动作 例 将一个文件内容复制到另一个文件中 try FileinFile newFile file1 dat FileoutFile newFile file2 dat fis newFileInputStream inFile fos newFileOutputStream outFile intc while c fis read 1 fos write c fis close fos close catch FileNotFoundExceptione catch IOExceptionee 三 随机存取文件 类RandomAccessFilezip文件需要用随机方法处理文件目录给出个文件的入口 可以随机读取 创建一个随机文件newRandomAccessFile file1 txt r newRandomAccessFile file2 txt rw 随机文件可以同时完成读和写操作 三 随机存取文件 支持随机文件操作的方法 readXXX 或writeXXX 见教材P243表8 3 skipBytes 将指针向下移动若干字节seek 将指针调到所需位置getFilePointer 返回指针当前位置length 返回文件长度利用seek longpos 方法查找随机文件中的信息例 显示读取文件A dat 见下页 五 随机存取文件 importjava io classr publicstaticvoidmain Stringargs try RandomAccessFilefile newRandomAccessFile A dat rw longfilePoint 0 定义指针longfileLength file length while filePoint fileLength Strings file readLine 读取文件中的数据System out println s filePoint file getFilePointer file close catch Exceptione 随机流 获取文件长度 移动记录指针 四 在Java中调用外部程序 运行可执行文件的Runtime类try Stringstr javaCopyFile 或Stringstr xxx exe Runtimert Runtime getRuntime rt exec str catch IOExceptione 见教材246页 18 应用示例 1 例8 6 用Runtime类对象运行java应用程序 2 例8 7 调用Windows系统自带的计算器 19 分析 例8 8 1 建立一个卡片布局的窗体 2 建立线程 负责文件流的操作 Java语言程序设计 清华大学出版社 第9章网络通信 21 主要内容 1 网络编程基础2 基于TCP网络程序设计3 基于UDP网络程序设计4 基于C S模式的分布计算 22 一 Java与网络 IP协议 TCP协议和UDP协议 1 网络数据通信的几个重要协议 23 源IP地址 目的IP地址 IP数据报结构 24 传输层数据报文结构 TCP 25 传输层数据报结构 UDP报文 26 2 端口号 端口号 TCP IP协议为每种服务定义了一个端口 服务端口号ftp21http80pop3110 27 3 套接字Socket Socket是网络程序中最常用的方式 用于建立两个不同程序之间通过网络进行通信的信道 28 2 套接字Socket 什么是socket 套接字是IP与端口的组合 可以分辨在internet上运行的程序 29 进程与进程之间建立起连接 30 建立套接字Socket 在客户端使用socket类 指定服务器IP和端口号 以便连到服务器上 Socket host IP prot 在服务器端使用ServerSocket类 以等待客户端的连接 ServerSocket port 客户端呼叫 服务器等待 31 Socket主要方法 在客户端 建立socket连接后 还应该建立输入输出数据流 getInputStream 获得输入流getOutputStream 获得输出流在服务器端 ServerSocket类的accept 方法使服务器处于阻塞状态 等待用户请求 32 二 TCP协议Socket编程 33 例1 演示服务器与客户之间的交互 服务器等待 客户访问 相互通一次信息 客户端向服务器发出信息 你好 服务器接收到信息后 给出回应 你好 我是服务器 34 21 5Socket 21 5Socket 创建服务器 端口号 定义数据成员 服务器等待网络连接 建立socket流 读客户端信息 向用户发出确认字符串 创建Socket实例 定义数据成员 建立socket流 读socket流 接收并显示 送用户名给服务器 关闭流 waitingforuser 127 0 0 14331 4331 这里是服务器 connetctingclient 你好 提示用户登录成功 读socket流 35 客户机端 importjava io classC publicstaticvoidmain String args try Socketsocket newSocket 127 0 0 1 6565 DataOutputStreamout newDataOutputStream socket getOutputStream out writeUTF 我是客户机 DataInputStreamin newDataInputStream socket getInputStream Strings in readUTF System out println 客户机收到 s catch Exceptione 36 服务器端 importjava io classS publicstaticvoidmain String args try ServerSockets socket newServerSocket 6565 Socketsocket s socket accept DataInputStreamin newDataInputStream socket getInputStream Strings in readUTF System out println 服务器收到 s DataOutputStreamout newDataOutputStream socket getOutputStream out writeUTF 我是服务器 catch Exceptione 37 21 5Socket 显示服务器与客户机间的通信 服务器端 DataOutputStreamout null DataInputStreamin null ServerSockets socket null Socketc socket null Strings 存放读取到的信息 try s socket newServerSocket 4331 catch IOExceptione try c socket s socket accept catch IOExceptione 创建服务器 端口号 定义数据成员 服务器等待网络连接 用循环语句收发信息 见下页 38 in newDataInPutStream clientSocket getInputStream out newDataOutputStream clientSocket getOutputStream 建立socket流 等待客户登录 out writeUTF 这里是服务器 clientSocket close While true s in readUTF if s null break 读客户端信息 39 创建Socket实例 DataOutputStreamout null DataInputStreamin null Stringstring Socketsocket null 定义数据成员 try socket newSocket 127 0 0 1 4331 input newDataInputStream socket getInputStream output newPrintStream socket getOutputStream 建立socket流 catch IOExceptione System out println 无法连接 40 Out writeUTF 你好 System out println input readLine 读socket流 看到提示 从键盘上读送用户名送给服务器端 关闭流 mysocket close System out println s 读服务器反馈 While true s in readUTF if s null break 41 考虑多用户 第一种解决方案 一台计算机上一次启动多个服务器程序 只是端口号不同 myservermyclient f21 batmyserver2myclient2 f9 bat 42 多用户的第二种方案 支持多客户 Server client1 client2 serverthread serverthread 将服务器写成多线程的 不同的线程为不同的客户服务 main 只负责循环等待线程负责网络连接 接收客户输入的信息 43 客户1 客户2 服务器 线程run 下面简单分析教材P276例4 44 client Run Out writeUTF In readUTF 客户端 writer start 按钮事件 socket getInputStream getOutputStream 服务器 45 服务器端 服务器 4321 acceptsocket 客户 IPclient1 线程 客户 IPclient2 线程 服务器一端为了能接收多个客户的信息 它的输入流 输出流都是数组型的 ServerSocket accept 等待用户连接 一旦连接上 则调用服务程序 服务程序的主要内容是网络的读写 多客户的原因 网络读写的功能用多线程实现 因此将此部分功能单独分离出来 构成线程类 46 服务器端 client1 client2 serviceRequest server ServerSocket Socket getOutputStream getInputStream reader run reader run accept reader start read net input write net output 47 在Java中 网络类都在类库中 用来存储internet地址的类InetAddress 其主要方法 getHostName 获取InetAddress对象的主机名或域名getHostAddress 获取InetAddress对象的IP地址getLocalHost 获取本机的IP地址 48 例 获取本机的IP地址 publicclassgetLocalHostTest publicstaticvoidmain Stringargs InetAddressmyIP null try myIP InetAddress getLocalHost catch UnknownHostExceptione System out println myIP 创建inetAddress类不用构造函数 不用new 49 Java与网络 下面的例子演示java如何根据域名自动到DNS上查找IP地址 与DNS服务器的连接减至一行 publicclassgetIP publicstaticvoidmain Stringargs InetAddresspku null try pku InetAddress getByName catch UnknownHostExceptione System out println pku 50 三 基于数据报Datagram TCP IP传输层由两个并列的协议 TCP UDP UDP数据报的每个数据包要包含目的地址和端口号 socket server client Datagram数据报 server client 51 在UDP中 要使用二个类 1 DatagramSocket类发送时 用send 方法发送数据 接收时 用receive 方法接收数据 2 DatagramPacket类用于打包或拆包发送时打包 包由数据 接收地址 端口号组成 接收时拆包 取出包中的数据 接收地址 端口号 52 Datagram工作过程 建立数据报socket 建立一个报文包packet 等待请求报文 建立数据报socket 建立一个请求包 发出请求 获得对方地址 构成信息包 发送出去 创建接收包 等待接收 53 Datagram 一 服务器端发出报文的步骤如下 1 定义数据成员DatagramSocketsocket DatagramPacketpacket InetAddressaddress 用来存放接收方的地址 intport 用来存放接收方的端口号 2 创建数据报文Socket对象try socket newDatagramSocket 1111 catch SocketExceptione socket绑定到一个本地的可用端口 等待接收客户的请求 54 Datagram 3 分配并填写数据缓冲区 一个字节类型的数组 byte Buf newbyte 256 存放从客户端接收的请求信息 4 创建一个DatagramPacketpacket newDatagramPacket Buf数组 256长度 用来从socket接收数据 它只有两个参数5 服务器阻塞socket receive packet 在客户的请求报道来之前一直等待 55 Datagram 6 从到来的包中得到地址和端口号InetAddressaddress packet getAddress intport packet getPort 7 将数据送入缓冲区或来自文件 或键盘输入8 建立报文包 用来从socket上发送信息packet newDatagramPacket buf buf length address port 9 发送数据包10 关闭socketsocket send packet socket close 56 Datagram 二 客户端接收包的步骤如下 1 定义数据成员intport InetAddressaddress DatagramSocketsocket Datagr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年健康管理师职业技能等级评定试题及答案解析
- 2025年建筑规划师技术水平认证试题及答案解析
- 2025年劳动保护员考试模拟题及答案
- 2025年环境安全检测师资格考试试题及答案解析
- 2025年安全知识进阶题及答案
- 2025年电信公司网络工程师岗位招聘面试题及解析
- 2025年工程造价工程师资格考试试题及答案解析
- 2025年服装设计师实务考试试题及答案解析
- 2025年飞机维修技师执业技能考核试题及答案解析
- 2025年早教师笔试模拟试卷及解析
- 2025云南文山州融资担保有限责任公司人员招聘6人笔试参考题库附答案解析
- 2025-2026学年济南版(2024)初中生物八年级上册教学计划及进度表
- 2025山西运城市临猗县招聘社区工作者32人(一)考试备考试题及答案解析
- 2025年鞍山市铁西区教育局面向师范类院校应届毕业生校园招聘45人笔试参考题库附答案解析
- 空调与制冷操作考试试题(含答案)
- (2025年)河南省信阳市辅警协警笔试笔试真题(含答案)
- 网络直播带货讲解
- 2025江西九江都昌县公安局招聘警务辅助人员14人笔试备考题库及答案解析
- 肿瘤药物配制注意事项
- 军队骨干岗位申请书
- GB/T 22126-2025物流中心作业通用规范
评论
0/150
提交评论