Java应用开发与实践-第11章IO操作

上传人:痛*** 文档编号:193367444 上传时间:2023-03-09 格式:PPT 页数:29 大小:1.68MB
收藏 版权申诉 举报 下载
Java应用开发与实践-第11章IO操作_第1页
第1页 / 共29页
Java应用开发与实践-第11章IO操作_第2页
第2页 / 共29页
Java应用开发与实践-第11章IO操作_第3页
第3页 / 共29页
资源描述:

《Java应用开发与实践-第11章IO操作》由会员分享,可在线阅读,更多相关《Java应用开发与实践-第11章IO操作(29页珍藏版)》请在装配图网上搜索。

1、Java应用开发与实践第第二二部分部分 酒店管理系统的设计酒店管理系统的设计学习目标学习目标l 理解理解I/O流与文件的概念流与文件的概念l 掌握创建流与文件的方法掌握创建流与文件的方法l 理解输入理解输入/输出流的概念输出流的概念l 理解字节流理解字节流/字符流的概念字符流的概念l 了解了解ZIP压缩输入压缩输入/输出流输出流n 11.1 I/O流与文件流与文件n 11.2 输入输入/输出流输出流n 11.3 字节流字节流n 11.4 字符流字符流n 11.5 ZIP压缩输入压缩输入/输出流输出流n 11.6 实训实训11 输入输出流的应用输入输出流的应用目录目录11.1 I/O流与文件流与

2、文件lI/O(Input/Output)即输入/输出,指信号或数据在计算器的内部存储器和外部存储器或其它周边设备之间的传递。lJava的I/O是实现输入和输出的基础,可以方便的实现各种数据的输入和输出操作。l在Java中把不同的输入/输出源如键盘、文件、网络连接等抽象表述为“流”(stream)。通过流的形式允许Java程序使用相同的方式来访问不同的输入/输出源。11.1.1 I/O流的概念和分类流的概念和分类11.1 I/O流与文件流与文件I/O的形式分为下面四种,本章讨论第一种,文件的读/写。l文件(File)读/写,以文件为读/写对象。l控制台(console,如DOS窗口)。例如打印到

3、显示器/键盘读入。l网络接口(TCP/UDP端口)读/写,例如,网上冲浪、网络聊天、邮件发送。l程序(线程)间通信,例如,数据传输。11.1.1 I/O流的概念和分类流的概念和分类11.1 I/O流与文件流与文件Java语言采用流的机制来实现输入/输出。流就是一个传送有序的字节序列。我们可以把它想象成为一个数据节点和程序之间建立起来的连接通道上的字节序列。流就是对输入数据源和输出目的地的抽象表示。11.1.1 I/O流的概念和分类流的概念和分类11.1 I/O流与文件流与文件l输入流:程序在内存中运行,文件在磁盘上,把文件从磁盘上读入内存中来,这个方向的流称为输入流。l输出流:把内存中的数据写

4、到磁盘上的文件,这个方向的流称为输出流。l字节流:用于读写二进制文件及其他任何类型文件,以byte为单位传输。l字符流:用于读写文本文件,以字符为单位传输。不能操作二进制文件。11.1.1 I/O流的概念和分类流的概念和分类11.1 I/O流与文件流与文件l应用程序中经常需要从外部的文件中读取信息和向外部文件写出数据进行保存,就需要创建File类的对象文件。lJava中的File类是文件和目录路径名的抽象形式。File类是java.io包中唯一代表磁盘文件本身的对象。File类定义了一些与平台无关的方法来操作文件。lFile类主要用于文件和目录的创建、文件的查找和文件的删除等。11.1.2 F

5、ile类类11.1 I/O流与文件流与文件/创建文件对象file1,参数是文件所在路径File file1=new File(d:myDocfirst.txt);if(file1.exists()/判断是否是文件System.out.println(文件+file1.getName()+已经存在);else System.out.println(文件+file1.getName()+不存在);11.1.2 File类类11.1 I/O流与文件流与文件创建一个文件对象,不管这个文件是否存在于文件系统中,都必须使用File类先实例化这个文件对象,即使它是一个并不存在的文件。File file1=n

6、ew File(d:myDocfirst.txt);File file2=new File(d:myDocsecond.txt);if(file1.exists()/判断是否是文件System.out.println(文件+file1.getName()+已经存在);else try /这里需要处理异常file1.createNewFile();catch(IOException e)e.printStackTrace();11.1.3 文件的创建与删除文件的创建与删除11.1 I/O流与文件流与文件File类有很多的方法,可以得到文件本身的属性,如getName()方法获得文件名、lengt

7、h()方法获得文件长度、getAbsolutePath()方法获得文件路径等。System.out.println(文件+file1.getName()+的地址是:+file1.getAbsolutePath();System.out.println(文件+file1.getName()+的长度是:+file1.length();System.out.println(文件+file2.getName()+的地址是:+file2.getAbsolutePath();System.out.println(文件+file2.getName()+的长度是:+file2.length();11.1.4

8、获取文件信息获取文件信息11.2 输入输入/输出流输出流把文件从磁盘上读入内存中的流称为输入流,输入流连接的数据源可以是任何串行数据源,如磁盘文件、网络另一端的信息发送程序、键盘等。11.2.1 输入流输入流11.2 输入输入/输出流输出流把内存中的数据写到磁盘上的文件,该流被称为输出流。输出流可以连接硬盘上的文件、网络上的另一端等任何可以接收字节序列的设备。11.2.2 输出流输出流11.3 字节流字节流1.抽象字节输入流InputStreamInputStream类(字节输入流)是所有字节输入流的抽象父类,它的所有子类继承自InputStream,它本身并不能创建实例来执行输入,但它将成为

9、所有输入流的模板,所以它的方法是所有输入流都可使用的方法。InputStream流及其子类都是向程序中输入数据的,且数据单位为字节(8bit)。11.3.1 抽象字节流抽象字节流InputStream和和OutputStream11.3 字节流字节流2.抽象字节输出流OutputStreamOutputStream类(字节输出流)是所有字节输出流的抽象父类,它本身并不能创建实例来执行输出,但它将成为所有输出流的模板,所以它的方法是所有输出流都可使用的方法。11.3.1 抽象字节流抽象字节流InputStream和和OutputStream11.3 字节流字节流1.字节文件输入流FileInpu

10、tStreamFileInputStream可以使用read()方法一次读入一个字节,并以int类型返回,或者是使用read()方法时读入至一个byte数组,byte数组的元素有多少个,就读入多少个字节。在将整个文件读取完成或写入完毕的过程中,这么一个byte数组通常被当作缓冲区,起着缓存数据的中间角色的作用。2.字节文件输出流FileOutputStreamFileOutputStream是用来处理以文件作为数据输出目的数据流,或者说是从内存区读数据到文件。FileOutputStream类用来处理以文件作为数据输出目的数据流。11.3.2 字节文件流字节文件流FileInputStream

11、和和FileOutputStream11.3 字节流字节流l为了减少访问外存的次数,应该在一次对外设的访问中,读写更多的数据。为此,除了程序和流节点间交换数据必需的读写机制外,还应该增加缓冲机制。缓冲流就是每一个数据流分配一个缓冲区,一个缓冲区就是一个临时存储数据的内存。这样可以减少访问硬盘的次数,提高传输效率。l字节缓冲输入流BufferedInputStream的作用是当向缓冲流写入数据时候,数据先写到缓冲区,待缓冲区写满后,系统一次性将数据发送给输出设备。l字节缓冲输出流BufferedOutputStream的作用是当从向缓冲流读取数据时候,系统先从缓冲区读出数据,待缓冲区为空时,系统

12、再从输入设备读取数据到缓冲区。11.3.3 字节缓冲流字节缓冲流BufferedInputStream和和BufferedOutputStream11.3 字节流字节流l 将文件读入内存,需要将BufferedInputStream与FileInputStream相结合,语法格式如下:FileInputStream fis=new FileInputStream(abc.txt);BufferedInputStream bis=new BufferedInputStream(fis);l 将内存写入文件,需要将BufferedOutputStream与FileOutputStream相结合,语

13、法格式如下:FileOutputStream fos=new FileOutputStream(abc.txt);BufferedOutputStream bos=new BufferedInputStream(fos);l 将键盘输入流读到内存,需要将BufferedReader与标准的数据流相结合,语法格式如下:InputStreamReader isr=new InputStreamReader(System.in);BufferedReader br=new BufferedReader(isr);11.3.3 字节缓冲流字节缓冲流BufferedInputStream和和Buffer

14、edOutputStream11.3 字节流字节流1.数据输入流DataInputStream数据输入流DataInputStream允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。2.数据输出流DataOutputStreamDataOutputStream数据输出流允许应用程序将基本Java数据类型写到基础输出流中。11.3.4 字节数据流字节数据流DataInputStream和和DataOutputStream11.4 字符流字符流1.Reader抽象类 Reader是用于读取字符流的抽象类,它能够将输入

15、流中采用其它编码类型的字符转换为Unicode字符,然后在内存中为其分配内存。其子类必须实现的方法只有 read(char,int,int)和 close()。11.4.1 抽象字符流抽象字符流Reader和和Writer11.4 字符流字符流2.Writer抽象类 Writer是写入字符流的抽象类,它能够将内存中的Unicode字符转换为其它编码类型的字符,再写到输出流中。其子类必须实现的方法仅有 write(char,int,int)、flush()和 close()。11.4.1 抽象字符流抽象字符流Reader和和Writer11.4 字符流字符流FileReader 与FileInp

16、utStream都是读取文件的输入流,FileReader主要用来读取字符文件,使用缺省的字符编码。11.4.2 字符文件流字符文件流FileReader和和FileWriter11.4 字符流字符流l为了提高字符流读写的效率,引入了缓冲机制,进行字符批量的读写,提高了单个字符读写的效率。BufferedReader用于加快读取字符的速度,BufferedWriter用于加快写入的速度。lBufferedReader是为了提供读的效率而设计的一个包装类,它可以包装字符流。可以从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。lBufferedReader的String r

17、eadLine()这个方法一次可以读取一个文本行,返回的直接就是这一行的字符串,如果读到行尾了就返回null。11.4.3 字符缓冲流字符缓冲流BufferedReader和和BufferedWriter11.4 字符流字符流lInputStreamReader 是字节流通向字符流的桥梁,它使用指定的charset读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。每次调用InputStreamReader 中的一个read()方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读

18、取操作所需的字节。l在BufferedReader类里包装InputStreamReader对象是一种从键盘输入字符或字符串的常用方法。11.4.4 转换流转换流InputStreamReader和和OutputStreamWriter11.5 ZIP压缩输入压缩输入/输出流输出流lZIP是一种较为常见的文件压缩形式,在Java中要想实现ZIP的压缩需要导入java.util.zip包,可以使用此包中的ZipFile、ZipOutputStream、ZipInputStream、ZipEntry几个类完成文件的压缩。11.5.1 压缩文件压缩文件11.5 ZIP压缩输入压缩输入/输出流输出流l

19、ZipInputStream和ZipFile是用来解压缩文件的,在压缩和解压缩的过程中,ZipEntry都会用到。在java的Zip压缩文件 中,每一个子文件都是一个ZipEntry对象。11.5.2 解压缩解压缩ZIP文件文件11.6 实训实训11 输入输出流的应用输入输出流的应用要求:判断有没有这个文件,如果有,直接使用FileInputStream类的read方法读取到内存并输出,如果没有,则使用createNewFile()方法创建新的文件,利用FileOutputStream的write()方法把内容写进新文件,读取到内存并输出。任务任务1:将一个文件的内容读取到内存,输出到控制台:

20、将一个文件的内容读取到内存,输出到控制台11.6 实训实训11 输入输出流的应用输入输出流的应用要求:从G盘下的文本文件test1.txt中读取所有字符,并转换成大写字母,最后保存在另一个文件test2.txt中,如果没有test2.txt文件,则创建之。任务任务2:DataInputStream和和DataOutputStream的使用的使用小结小结l对于文件内容的操作主要分为两大类:字符流和字节流。l字符流有两个抽象类:Writer和Reader,字节流也有两个抽象类:InputStream和 OutputStream。l输入流主要是通过read()读取文件,输出流主要是通过write()写出到文件。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!