JAVA程序设计PPT教学课件-第6章 输入输出流和对象串行化.ppt_第1页
JAVA程序设计PPT教学课件-第6章 输入输出流和对象串行化.ppt_第2页
JAVA程序设计PPT教学课件-第6章 输入输出流和对象串行化.ppt_第3页
JAVA程序设计PPT教学课件-第6章 输入输出流和对象串行化.ppt_第4页
JAVA程序设计PPT教学课件-第6章 输入输出流和对象串行化.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1,第6章 输入输出流 和对象串行化,2,本章导读,6-16-3节自学(需要掌握) 标准输入/输出 file类与文件信息 文件流 内存中的输入/输出流 数据流 随机存取文件 对象串行化,3,本章导读,6-16-3节自学(需要掌握) 标准输入/输出 file类与文件信息 文件流 内存中的输入/输出流 数据流 随机存取文件 对象串行化,4,标准输入/输出,system类的3个重要的类变量: 标准输入 public static final inputstream in; 标准输出 public static final printstream out; 标准错误输出 public static final printstream err; 定义这3个变量的目的是提高编程和程序执行效率,标准输入/输出,标准输入system.in是inputstream类的对象 从键盘输入数据 system.in.read(); 返回整型数据 标准输出system.out是printstream类的对象 向屏幕输出信息 system.out.println() system.out.print(),6,标准输入/输出,jdk1.5新增标准i/o功能 system.out.printf(“格式控制”,输出列表) 格式控制部分由格式控制符和普通字符构成,普通字符原样输出,格式控制符由由输出列表中的内容替换输出 格式控制中格式控制符的数量要与输出列表中的表达式的数量相同 常用格式控制符请参考课本p144p145,7,标准输入/输出,jdk1.5新增标准i/o功能 scanner类 scanner reader=new scanner(system.in); reader可以调用相应方法(请参考课本p145)从键盘上读入不同类型的数据 reader调用的每种方法都有一个相应的判断是否存在数据的方法,例如 hasnextbyte() hasnextint() ,8,本章导读,6-16-3节自学(需要掌握) 标准输入/输出 file类与文件信息 文件流 内存中的输入/输出流 数据流 随机存取文件 对象串行化,9,file类与文件信息,file类在java.io包中 java使用file类创建的对象来获取文件本身的一些信息,例如 文件所在的目录 文件读写权限 文件的大小 文件的创建与删除 ,10,file类的构造方法,public file(string pathname) file file1=new file(“d:enjoydata1.txt”); file file2=new file(“datadata2.txt”); public file(string parent,string child) file file3=new file(“d:enjoy”,“data”); file file4=new file(“d:enjoy”,“data4.txt”); public file(file parent,string child) file file5=new file(“d:enjoy”); file file6=new file(file5,“data”);,11,file类的成员方法,file类的成员方法可以分为以下几类 文件名或目录名信息获取 文件性质信息获取 文件内容有关信息获取 文件和目录操作 file类的成员方法请参考课本p147,6-5-2,程序6-4,testfile.java,课本p148,12,本章导读,6-16-3节自学(需要掌握) 标准输入/输出 file类与文件信息 文件流 内存中的输入/输出流 数据流 随机存取文件 对象串行化,13,文件流,文件和目录类file只能操纵文件和获取与文件相关的信息,但不能对文件进行读写 要做到对文件的读写操作,必须使用相关的文件流 文件流分为两类 文件字节流:fileinputstream, fileoutputstream 文件字符流:filereader, filewriter,文件字节流,文件字节输入流fileinputstream类按字节读取文件中的数据 构造方法 用文件名name创建一个文件字节输入流对象 public fileinputstream(string name) throws filenotfoundexception 用file对象创建一个文件字节输入流对象 public fileinputstream(file file) throws filenotfoundexception,文件字节流,fileinputstream类的对象调用read()方法顺序地读取文件,直到文件的末尾或者流被关闭, read()方法如下所示 public int read() throws ioexception public int read(byte b) throws ioexception public int read(byte b, int off, int len) throws ioexception 读取位置达到文件末尾,则返回-1,16,文件字节流,文件字节输出流fileoutputstream类按字节将数据写到文件中 构造方法 用文件名name创建一个文件字节输出流对象 public fileoutputstream(string name) throws filenotfoundexception 用file对象创建一个文件字节输出流对象 public fileoutputstream(file file) throws filenotfoundexception,文件字节流,fileoutputstream类的对象调用write()方法顺序地向文件写入内容,直到流被关闭,输入之初如果文件已经存在,则内容将被刷新;如果文件不存在,则文件将被创建 write()方法如下所示 public void write(int b) throws ioexception public void write(byte b) throws ioexception public void write(byte b, int off, int len) throws ioexception,18,文件字节流举例,程序6-5,testfileinout.java,课本p150 程序内容:把程序中的数据加密,用fileoutputstream存入文件,然后用fileinputstream读取 加密原理:将一个byte型数据b转换成它的对应数据255-b,文件字符流,文件字符输入流filereader类按字符读取文件中的数据 文件字符输入流操纵unicode字符,每个字符占2个字节 构造方法 用文件名name创建一个文件字符输入流对象 public filereader(string name) throws filenotfoundexception 用file对象创建一个文件字符输入流对象 public filereader(file file) throws filenotfoundexception,文件字符流,filereader类的对象调用read()方法顺序地读取文件,直到文件的末尾或者流被关闭, read()方法如下所示 public int read() throws ioexception public int read(char cbuf) throws ioexception public int read(char cbuf, int off, int len) throws ioexception 读取位置达到文件末尾,则返回-1,21,文件字符流,文件字符输出流filewriter类按字符将数据写到文件中 构造方法 用文件名name创建一个文件字符输出流对象 public filewriter(string name) throws filenotfoundexception 用file对象创建一个文件字符输出流对象 public filewriter(file file) throws filenotfoundexception,文件字符流,filewriter类的对象调用write()方法顺序地把字符数据写入文件 write()方法如下所示 public void write(int c) throws ioexception:写一个字符 public void write(char cbuf) throws ioexception:写cbuf.length个字符 public void write(char cbuf, int off, int len) throws ioexception:写数组片段 public void write(string str) throws ioexception:写全部的字符串 public void write(string str, int off, int len) throws ioexception:写字符串片段,23,文件字符流举例,程序6-6,testfileinout2.java,课本p152 程序内容:把字符串加密,使用文件字符输出流保存到文件中,然后用文件字符输入流读回 加密原理:将一个byte型数据b转换成它的对应数据65535-b,24,本章导读,6-16-3节自学(需要掌握) 标准输入/输出 file类与文件信息 文件流 内存中的输入/输出流 数据流 随机存取文件 对象串行化,25,内存中的输入/输出流,以内存作为输入/输出的来源/目的地,主要起到数据流动中转的作用 基于内存的输入/输出流可以分为以下几类 缓冲流 数组流 字符串流,缓冲流,缓冲流把数据从原始流成块读入或把输出数据积累到较大的数据块后再成批写出,通过减少系统资源的读写次数来加快程序的执行 字节缓冲流 bufferedinputstream bufferedoutputstream 字符缓冲流 bufferedreader bufferedwriter 缓冲输出流仅仅在缓冲区满或调用flush()方法时才将数据写到目的地,27,字节缓冲流,字节输入缓冲流bufferedinputstream类的构造方法 public bufferedinputstream(inputstream in) - 缓冲区大小默认 public bufferedinputstream(inputstream in, int size) - 参数size规定缓冲区大小,28,字节缓冲流,字节输出缓冲流bufferedoutputstream类的构造方法 public bufferedoutputstream (outputstream in) - 默认缓冲区大小 public bufferedoutputstream (outputstream in, int size) - 参数size指定缓冲区大小,字符缓冲流,字符输入缓冲流bufferedreader类的构造方法 public bufferedreader(reader in) public bufferedreader(reader in, int size) bufferedreader类新增了一个读取一行数据的方法 public string readline() throws ioexception 行的标志是“r”、“n”或者“rn”,30,字符缓冲流,字符输出缓冲流bufferedwriter类的构造方法 public bufferedwriter(writer out) public bufferedwriter(writer out, int size) bufferedwriter类新增了一个增加行分隔符的方法 public void newline() throws ioexception 行的标志是“r”、“n”或者“rn”,31,缓冲流举例,程序6-7,testbuffered.java,课本p154 程序内容:从一个文件中读取内容,在行与行之间增加换行符,输出到接收文件 运行前先创建文件 注意程序的flush()和多个close()操作 注意close()操作的先后顺序,32,数组流,流的源和目标还可以是内存中的数组 字节数组流 bytearrayinputstream bytearrayoutputstream 字符数组流 chararrayreader chararraywriter,字节数组流,字节数组输入流bytearrayinputstream类的构造方法 public bytearrayinputstream(byte buf) public bytearrayinputstream(byte buf, int offset, int length) 字节数组输入流的对象调用如下方法从源中读取数据 public int read() - 读取一个字节 public int read(byte b, int off, int len) - 读取至多len个字节 上述方法如果未读出字节则返回-1,字节数组流,字节数组输出流bytearrayoutputstream类的构造方法 public bytearrayoutputstream() public bytearrayoutputstream(int size) 字节数组输出流的对象调用如下方法可以顺序地向缓冲区写入一个字节 public void write(int b) - 向缓冲区写入一个字节 public void write(byte b, int off, int len) - 向缓冲区写入若干个连续的字节 public byte tobytearray() - 返回输出流已经写入缓冲区的全部字节,字符数组流,字符数组输入流chararrayreader类的构造方法 public chararrayreader(char buf) public chararrayreader(char buf, int offset, int length) 字符数组输入流的对象调用如下方法从源中读取数据 public int read()throws ioexception public int read(char b, int off, int len) throws ioexception,字符数组流,字符数组输出流chararraywriter类的构造方法 public chararraywriter() public chararraywriter(int size) 字符数组输出流的对象调用如下方法从源中读取数据 public void write(int c) public void write(char c, int off, int len) public char tochararray() - 把缓冲区中的全部字符用一个字符数组返回,37,数组流举例,程序6-8,testarray.java,课本p157 程序内容:把一句话分割成若干部分,通过字符数组输出流分批输出到内存中的一个字符数组中;然后通过字符数组输入流把字符数组中的数据读出,比较写出前和写入后二者是否一样 注意程序中有无close()方法;资源是怎样关闭的?,38,字符串流,字符串也可以作为输入流的源和输出流的目标 字符串输入流 stringreader 字符串输出流 stringwriter,39,字符串流,stringreader使用字符作为输入流的源 构造方法 public stringreader(string s) 调用下列方法,stringreader输入流可以读取字符串中的数据 public int read() throws ioexception - 读取一个字符,并转换成整数值 public int read(char cbuf, int off, int len) throws ioexception - 读取若干个字符,返回实际读入字符的数量,40,字符串流,stringwriter将内存作为流的目的地 构造方法 public stringwriter() public stringwriter(int initialsize) 调用下列方法,stringwriter输出流可以向缓冲区写入字符 public void write(int c) - 向缓冲区写入一个字符 public void write(char cbuf, int off, int len) - 向缓冲区写入若干个字符,字符串流,调用下列方法,stringwriter输出流可以向缓冲区写入字符 public void write(string str) - 向缓冲区写入一个字符串 public void write(string str, int off, int len) - 向缓冲区写入字符数组的一段 public void flush() - 刷新缓冲区 public string tostring() - 重写方法:把写入缓冲区的全部字符转换成一个字符串,42,字符串流举例,程序6-9,teststring.java,课本p159 程序内容:利用一个字符串输出流接收程序输出的语句片段,然后把接收到的字符串一次性显示出来 注意其中字符串输出流sw的flush()方法和tostring()方法,43,本章导读,6-16-3节自学(需要掌握) 标准输入/输出 file类与文件信息 文件流 内存中的输入/输出流 数据流 随机存取文件 对象串行化,44,数据流,数据流类包括数据输入流类datainputstream和数据输出流类dataoutputstream 这两个类提供了若干用于读写基本数据类型的方法 数据流允许程序按照与机器无关的风格读取java原始数据 数据流不再关心数据类型在具体存储时的存储空间大小和存储结构安排,45,数据流类的构造方法,以inputstream流为基础创建数据输入 public datainputstream(inputstream in) 以outputstream流为基础创建数据输出流 public dataoutputstream(outputstream out),46,数据流类的成员方法,读取基本类型的方法 写基本类型的方法 请参考课本p160,6-8-2,47,数据流举例,程序6-10,testdatainout.java,课本p160 程序内容:用数据流写入和读取不同类型的数据 先写先读 写入和读取的顺序严格一致,否则会出现乱码,48,本章导读,6-16-3节自学(需要掌握) 标准输入/输出 file类与文件信息 文件流 内存中的输入/输出流 数据流 随机存取文件 对象串行化,49,radomaccessfile类,randomaccessfile用来随机读取文件,其功能强大 randomaccessfile类直接隶属于object类 randomaccessfile类创建的流的指向既可以作为源,也可以作为目的地 randomaccessfile类实现了datainput和dataoutput两个接口,randomaccessfile类的构造方法,public randomaccessfile(string name, string mode) throws filenotfoundexception public randomaccessfile(file file, string mode) throws filenotfoundexception 第二个参数mode有4种取值: “r” 以只读方式打开文件 “rw” 以读写方式打开文件 “rwd” 以读写方式打开文件,并要求内存中的变化同步写到底层存储设备 “rws” 以读写方式打开文件,并要求内存中的变化同步写到底层存储设备,并且还可以更新文件的元数据,randomaccessfile类的成员方法,对文件指针的操作 public long getfilepointer() throws ioexception - 返回当前文件指针 public void seek(long pos) throws ioexception - 把文件指针置于给出的位置pos public long length() throws ioexception - 返回文件长度 public int skipbytes(int n) throws ioexception - 从当前位置开始跳过n个字节,randomaccessfile类的成员方法,读文件操作 datainputstream类中的所有方法都被实现 写文件操作 dataoutputstream类中的所有方法都被实现,53,randomaccessfile应用举例,程序6-11,testrandomaccess.java,课本p163 程序内容:用randomaccessfile类创建了流,先进行写操作,后进行读操作 读操作只挑选特定的数据输出 定位特定数据时使用了两种方式:seek()和skipbytes(),54,本章导读,6-16-3节自学(需要掌握) 标准输入/输出 file类与文件信息 文件流 内存中的输入/输出流 数据流 随机存取文件 对象串行化,对象串行化,为了把内存中的对象保存、传输和复原,需要把对象转换成为一种可保存和复原的格式 对象的永

温馨提示

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

评论

0/150

提交评论