chap02-Java及I.ppt_第1页
chap02-Java及I.ppt_第2页
chap02-Java及I.ppt_第3页
chap02-Java及I.ppt_第4页
chap02-Java及I.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络络程序设计设计 主讲讲人:张张 俊 河南理工大学计计算机学院网络络工程系 第二章 Java及其输输入输输出机制 网络程序设计 第二章 Java及其输输入输输出机制 v 2.1 Java语言 v 2.2 Java输入输出机制 2.2.1 流的概述 2.2.2 输出流 2.2.3 输入流 2.2.4 过滤 器 2.2.5 读写器 2.2.6 输入输出方法 网络程序设计 2.1 Java语语言 v Java是一种可以撰写跨平台应用软件的面向对象的 程序设计语 言,是由Sun Microsystems公司于1995 年5月推出的Java程序设计语 言和Java平台(即 JavaSE, JavaEE, JavaME)的总称。 v Java 技术具有卓越的通用性、高效性、平台移植性 和安全性, v 广泛应用于个人PC、数据中心、游戏控制台、科学 超级计算机、移动电话 和互联网,同时拥有全球最 大的开发者专业社群。在全球云计算和移动互联网 的产业环 境下,Java更具备了显著优势和广阔前 景。 网络程序设计 2.1 Java语语言 v Java vs C+ Java是纯面向对象语言,程序设计的单元是类,程序 运行的单元为对象 C+是混合型语言,既可以是面向对象的,也可以是面 向过程的 class A private: int a; public: voi d f() int g(float x) void main() A a = A(); a.f(); g(3.14); public class A private int a; public void f() public class B public static void main( String args) A a = new A(); a.f(); 网络程序设计 2.1 Java语语言 v 其它语法区别 定义常量: const float PI = 3.14 final static float PI = 3.14; Java去除了C+指针、析构函数等特性 Java对象都是在堆上的,C+有栈对象也有堆对象 Java中boolean类型和整型是不能进行类型转换的 if(a=0) else Java中只支持单继承,C+支持多继承 class A extends B Java抽象方法使用abstract,C+使用virtual Java对于完全抽象的类使用interface(接口)表示 网络程序设计 2.2 Java的输输入输输出机制 v Java的输入输出屏蔽了底层介质的差别,采用一 套统一的接口 v 从逻辑上看,编程人员可以认为在所有介质上进 行输入输出操作时完全等效的 v Java的输入输出操作采用流的机制,数据流是指所 有的数据通信通道 v 在Java中有关流的操作使用java.io.* 网络程序设计 2.2.1 流的概述 v 大部分网络编程实质上处理输入和输出将字节 从一个系统传输 到另一系统中 v 网络上读写信息 v.s. 读写文件 在逻辑上(从Java的角度)没什么区别Java 的I/O机制建立在流的基础上。不同的流用于读写 特定资源,但它们都有基本的方法用于读写操作 v Java中,一个可以读取字节序列的对象称为输入流 ,一个可以向其中写入字节序列的对象称之为输出 流。 v 流是同步的,即:程序向流进行读写时,必须等待 数据准备完毕后方法才会结束返回 网络程序设计 2.2.1流的概述 v Java中流的分类 原始流(Stream):用于原始的面向字节的数据输入 输出操作 Filter stream(过滤器流)可与输入或输出流链接 ,它可以修改读写的数据,将其转化为其它格式 Reader和Writer可以与输入或输出流链接,用于读取 文本而非字节 网络程序设计 2.2.2 输输出流(Output Stream) v Java基础的输出流类为: public abstract class OutputStream v 基本方法包括(所有方法都抛出IOException): public abstract void write(int b) public void write(byte data) public void write(byte data, int offset, int length) public void flush() public void close() v OutputStream子类实现这 些方法将数据写到特定媒 体 FileOutputStream TelnetOutputStream ByteArrayOutputStream 网络程序设计 2.2.3 输输入流(Input Stream) v Java基础的输入流类为: public abstract class InputStream v 基本方法包括(所有方法都抛出IOException): public abstract int read() public void read (byte data) public void read (byte data, int offset, int length) public int available() public void skip(long n) public void close() v InputStream子类实现这 些方法将数据写到特定媒体 中 FileInputStream、 TelnetInputStream、 ByteArrayInputStream 网络程序设计 12 输出文件输入文件 read write File I/O v 文件对象的建立 v File fp=new File(“tempfile.txt”); v 对文件操作要定义文件流 v FileInputStream类用来打开一个输入文件 v FileOutputStream类用来打开一个输 出文件 网络程序设计 13 File I/O v 文件流的建立 v FileInputStream in=new FileInputStream(fp); v FileOutputStream out=new FileOutputStream(fp); v 例:文件拷贝(注意要捕获文件异常) v 输入流的参数是用于输入的文件名 v 输出流的参数是用于输出的文件名 file1.txtfile2.txt 输入流输出流 网络程序设计 14 6.3 File I/O import java.io.*; class filestream public static void main(String args) try File inFile=new File(”file1.txt“); File outFile=new File(”file2.txt“); FileInputStream fis=new FileInputStream(inFile); FileOutputStream fos=new FileOutputStream(outFile); int c; while(c=fis.read()!=-1) fos.write(c); fis.close(); fos.close(); catch(FileNotFoundException e) System.out.println(“FileStreamsTest: “+e); catch(IOException e) System.err.println(“FileStreamsTest: “+e); 网络程序设计 2.2.3 输输入流(Input Stream) v 标记和重置(Marking 网络程序设计 缓缓冲流(Buffered Stream) v BufferedOutputStream将写出的数据存储在缓冲区中 ,直到缓冲区满或者流被刷新;之后一次性将这些数 据将数据写到底层输出流 v BufferedInputStream读取数据时会先在缓冲区中获 取数据,只有在缓冲区中数据用完时才从底层输入流 读取数据 public BufferedInputStream(InputStream in) public BufferedInputStream(InputStream in, int buffersize) public BufferedOutputStream(OutputStream out) public BufferedOutputStream(OutputStream in, int buffersize) 网络程序设计 打印流(Print Stream) v 用于输出的流,System.out就PrintStream的一个实例 v 构造函数: public PrintStream(OutputStream out) public PrintStream(OutputStream out, boolean autoFlush) v PrintStream定义了9个重载的print和10个重载的 println方法,这些方法将不同基本类型的参数先转换 为字符串再写入底层输出流 网络程序设计 打印流(Print Stream) v PrintStream的println方法应注意三个问题: println输出时平台相关的,有的是换行,有的是回 车,有的是换行/回车对 println按其运行平台制定默认的编码格式 PrintStream会“吃”掉所有的异常 网络程序设计 数据流(Data Stream) v DataOutputStream和DataInputStream类提供将 Java基本类型和字符串写成二进制格式及从二进制 格式读出为Java基本类型和字符串 v writeBoolean、writeByte、writeShort v readBoolean、readByte、readShort 网络程序设计 2.2.5 读读写器(Readers System.out.println(“Enter a character:”); try inChar=(char)System.in.read(); Syste.out.println(“ “+ inChar); catch(IOException e) Sytem.out.println(“Error reading from user”); 网络程序设计 30 输输入输输出方法 import java.io.*; class IOTest public statics void main(String args) try byte bArray=new byte128; System.out.println(“Enter something:”); System.in.read(bArray); System.out.print(“You entered:”); System.out.println(bArray); catch(IOException ioe) System.out.println(ioe.toString(); 网络程序设计 31 输输入输输出方法 v 为什么输入的是字符,输出是乱码? v 原因:Sys

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论