ImageVerifierCode 换一换
格式:PPTX , 页数:33 ,大小:266.23KB ,
资源ID:4666748      下载积分:12 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4666748.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(93IO数据流与文件处理.pptx)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

93IO数据流与文件处理.pptx

1、第9章 Java高级编程 n n9.1 9.1 异常处理异常处理 n n9.2 Java9.2 Java多线程机制多线程机制 n n9.3 I/O9.3 I/O数据流与文件处理数据流与文件处理 n n9.4 9.4 网络编程网络编程n n9.5 9.5 数据库操作数据库操作9.3 I/O数据流与文件处理数据流与文件处理n n9.3.1 9.3.1 流概述流概述 n n9.3.2 9.3.2 文件文件类类(File)(File)的使用的使用 缓冲区流输出和输入缓冲区流输出和输入 数据和对象的输入输出流数据和对象的输入输出流 InputStreamReaderInputStreamReader类类

2、 大多数程序所处理的数据都要从外部输入,即这些数据要从数据源(大多数程序所处理的数据都要从外部输入,即这些数据要从数据源(sourcesource)获得,数据源指提供数据的地方;而程序的运行结果又是要送到数据宿获得,数据源指提供数据的地方;而程序的运行结果又是要送到数据宿(destinationdestination),数据宿指接收数据的地方。其中数据源可以是磁盘文件、键盘或),数据宿指接收数据的地方。其中数据源可以是磁盘文件、键盘或网络插口等,数据宿可以是磁盘文什、显示器、网络插口或者打印机等。网络插口等,数据宿可以是磁盘文什、显示器、网络插口或者打印机等。数据源和数据宿的这种多样性,常常造

3、成程序处理输入数据源和数据宿的这种多样性,常常造成程序处理输入/输出的复杂性。另一方输出的复杂性。另一方面,就程序而言,不希望将编程的精力过多地消耗在处理输入面,就程序而言,不希望将编程的精力过多地消耗在处理输入/输出的具体细节上面,输出的具体细节上面,而希望所有的输入而希望所有的输入/输出操作都能够有一个相对统一的、简单的操作方式,而不管输输出操作都能够有一个相对统一的、简单的操作方式,而不管输入入/输出所涉及的数据源和数据宿是怎样的不同和多样。输出所涉及的数据源和数据宿是怎样的不同和多样。9.3.1 9.3.1 流概述流概述数据源数据源数据宿数据宿程序程序1.流的概念流的概念 怎样解决由于

4、数据源和数据宿多样性而带来的输入怎样解决由于数据源和数据宿多样性而带来的输入/输出操作的复杂性呢输出操作的复杂性呢?JaveJave引入的引入的“流流”以及有关的以及有关的“流类流类”就是用于解决上述矛盾的有效办法。就是用于解决上述矛盾的有效办法。“流流”可以被理解为一条可以被理解为一条“管道管道”。这条。这条“管道管道”有两个端口:一端与有两个端口:一端与数据源(当输入数据时)或数据宿(当输出数据时)相连,另一端与程序相数据源(当输入数据时)或数据宿(当输出数据时)相连,另一端与程序相连。连。在与数据源或数据宿相连的端口在与数据源或数据宿相连的端口,“,“管道管道”在读写数据时能够应付数据源

5、在读写数据时能够应付数据源和数据宿的多样性,消化掉因数据源和数据宿的多样性带来的数据读和数据宿的多样性,消化掉因数据源和数据宿的多样性带来的数据读/写的写的复杂性;而在与程序相连的端口,复杂性;而在与程序相连的端口,“管道管道”提供了输入提供了输入/输出的统一操作界输出的统一操作界面。由于在程序和数据源面。由于在程序和数据源/数据宿之间建立了数据宿之间建立了“管道管道”,使得程序输入,使得程序输入/输出输出时原本直接对数据源和数据宿的繁杂操作转化为对时原本直接对数据源和数据宿的繁杂操作转化为对“导管导管”的统一而简单的的统一而简单的操作,这样就大大降低了输入操作,这样就大大降低了输入/输出的复

6、杂性,减轻了程序员的负担。输出的复杂性,减轻了程序员的负担。有了流,程序和外界的数据交换,都可通过流实现。当程序要从数据源获有了流,程序和外界的数据交换,都可通过流实现。当程序要从数据源获得数据时,必须在程序和数据源之间建立如图得数据时,必须在程序和数据源之间建立如图6-56-5的输入流;当程序要把结的输入流;当程序要把结果输送到数据宿时,必须在程序和数据宿之间连接建立如图果输送到数据宿时,必须在程序和数据宿之间连接建立如图6-66-6的输出流。的输出流。无无论论涉涉及及输输入入/输输出出的的数数据据源源和和数数据据宿宿是是什什么么,只只要要在在程程序序和和数数据据源源/数数据据宿宿之之间间建

7、建立立了了流流,用用户户就就不不需需要要再再关关心心数数据据来来自自何何方方或或送送向向何何处处,程程序序中中输输入入/输输出出操操作作的的复复杂杂性性就就大大大大降降低低了了。所所有有输输入入/输输出出操操作作都都转转换换为为对对流流的的操作。操作。2.输入输出类的结构输入输出类的结构 根据根据“管道管道”里流动的数据的类型里流动的数据的类型,流被分为流被分为字符流字符流(Character Character StreamsStreams)和和字节流字节流 (Byte StreamsByte Streams),字符流以字符为传输单位,而字节,字符流以字符为传输单位,而字节流以字节为传输单位

8、流以字节为传输单位。根据流中数据传输的方向,流被分为根据流中数据传输的方向,流被分为输入流输入流和和输出流输出流。虽虽然然JavaJava语语言言提提供供了了种种类类繁繁多多的的流流,但但这这些些流流被被很很好好地地组组织织成成树树状状结结构构,并并不不显显得得错错综综复复杂杂。一一旦旦熟熟练练地地掌掌握握I/OI/O流流,编编程程效效率率就就会会有有显显著著的的提高,下图为提高,下图为java java 字节流输入输出接口、类的继承图。字节流输入输出接口、类的继承图。根据流的建立方式和工作原理,流分为根据流的建立方式和工作原理,流分为节点流节点流 (Node StreamsNode Str

9、eams)与与过滤过滤流流 (Filter StreamsFilter Streams),节点流是直接建立在输入、输出媒体之上的,而过,节点流是直接建立在输入、输出媒体之上的,而过滤流必须以某一个节点流作为流的来源,可以在读滤流必须以某一个节点流作为流的来源,可以在读/写数据的同时对数据写数据的同时对数据进行处理。进行处理。例例.System.out和和System.in对象的使用对象的使用import java.io.*;class InOut public static void main(Stringargs)byte buffer=new byte20;System.out.print

10、ln(请在下面输入一行字符:请在下面输入一行字符:);try System.in.read(buffer,0,20);/使用使用System.in对象的对象的read方法,方法,read方法会抛出异常方法会抛出异常 catch(Exception e)/捕获异常并处理捕获异常并处理 System.out.println(读取输入字符出错,错误信息为:读取输入字符出错,错误信息为:+e.toString();System.out.println(您刚才输入的一行字符为您刚才输入的一行字符为:);String inputStr=new String(buffer);System.out.print

11、ln(inputStr);3.标准输入输出流标准输入输出流 System System类管理标准输入输出流和错误流。类管理标准输入输出流和错误流。Java Java定义了定义了SystemSystem类的三个静态成员对象:类的三个静态成员对象:System.inSystem.in 从标准输入从标准输入(通常是键盘通常是键盘)中读入数据中读入数据 System.outSystem.out 将输出送到默认的显示将输出送到默认的显示(通常是显示屏通常是显示屏)System.err System.err 将错误信息数据输出到默认的显示将错误信息数据输出到默认的显示 每当每当mainmain方法被执行时

12、就自动生成上述三个对象。方法被执行时就自动生成上述三个对象。4.InputStream类和类和OutputStream类类int read()从流中读取一个字节并将该字节作为整数返回从流中读取一个字节并将该字节作为整数返回,若没有数据则返回若没有数据则返回-1 int read(byte b)从流中读取多个字节放到从流中读取多个字节放到b中中,返回实际读取到的字节数返回实际读取到的字节数 int read(byte b,int off,int len)从流中读取最多从流中读取最多len字节的数据字节的数据,放到数组放到数组b的的下标下标off开始的单元中,返回读取到的字节数开始的单元中,返回读

13、取到的字节数 long skip(long n)跳过流中指定的字节数跳过流中指定的字节数 InputStream InputStream类类表示基本输入流,是字节流,它定义了一套所有输入表示基本输入流,是字节流,它定义了一套所有输入流都需要用的方法:流都需要用的方法:注:上面给的方法定义并非是完整的,完整定义注:上面给的方法定义并非是完整的,完整定义(如如int read()如下:如下:public abstract int read()throws IOExceptionInputStream类类 InputStream InputStream类中定义了一套所有输入流都需要用的方法,而它的子

14、类将这些类中定义了一套所有输入流都需要用的方法,而它的子类将这些方法定义完整,供程序中使用。如我们常用的方法定义完整,供程序中使用。如我们常用的readread方法就是标准输入对象方法就是标准输入对象System.inSystem.in的的readread方法。方法。read()read()方法使用例:方法使用例:System.out.println(System.in.read();System.out.println(int)System.in.read();/不必要的强制转换不必要的强制转换 System.out.println(byte)System.in.read();System.

15、out.println(char)System.in.read();read(byte b)read(byte b)方法使用例:方法使用例:byte b=new byte3;System.in.read(b);for(int i=0;i3;i+)System.out.print(bi+);System.out.println();String s=new String(b);System.out.print(s);注意:注意:InputStreamInputStream类的类的readread方法接受的是字节数据方法接受的是字节数据(8(8位位),而不是字符。,而不是字符。ASCIIASCII

16、码中字符和字节数据对应的都是码中字符和字节数据对应的都是8 8位数据,位数据,而在而在UnicodeUnicode字符集中,字字符集中,字符都被设置为符都被设置为1616位数据,这样位数据,这样,利用利用InputStreamInputStream类来接收键盘字符将接收不到字类来接收键盘字符将接收不到字符的高位信息!符的高位信息!InputStreamInputStream类的其它方法:类的其它方法:public int available()throws IOException 返回当前流中可用的字节数返回当前流中可用的字节数public void close()throws IOExcep

17、tion 关闭当前流对象关闭当前流对象public synchronized void mark(int readlimit)在流中标记一个位置在流中标记一个位置public synchronized void reset()throws IOExeeption 返回流中标记过的位置返回流中标记过的位置public boolean markSupported()返回一个流是否支持标记和复位操作的布尔值返回一个流是否支持标记和复位操作的布尔值 与与InputStream类相对应的输出流是类相对应的输出流是OutputStream,它具有所有输出流类的它具有所有输出流类的基本功能,同基本功能,同I

18、nputStream类相似,它具有以下相应的方法:类相似,它具有以下相应的方法:public abstract void write(int b)throws IOException 向流中写一个字节向流中写一个字节public void write(byte b)throws IOException 向流中写入一个字节数组向流中写入一个字节数组public void write(byte b,int off,int len)throws IOException 从数组从数组b的第的第off个位置开始写入个位置开始写入len长度的数据长度的数据 public void flush()throw

19、s IOException 清空流并强制将缓冲区中的所有数据写入到流中清空流并强制将缓冲区中的所有数据写入到流中 public void close()throws IOException 关闭流对象关闭流对象OutputStream类类9.3.2 文件类文件类(File)的使用的使用 为了将程序的运行结果永久保留,常需要将运行结果输出到文件中,反之又需要从文件中读取数据输入到程序中,这就是文件操作。JavaJava提供了专门处理文件的类提供了专门处理文件的类FileFile,还提供了对文件进行输入输出,还提供了对文件进行输入输出的文件输入输出流类的文件输入输出流类(文件流文件流),以此来实现

20、文件的操作。,以此来实现文件的操作。文件流是基本输入输出流类的子类。按数据交换的单位不同文件流是基本输入输出流类的子类。按数据交换的单位不同,可分为字可分为字符流、字节流两种符流、字节流两种,其读写的方式都是顺序方式。其读写的方式都是顺序方式。本节介绍以字符为单位的文件访问,以字节为单位的方式在下一小节介绍。n n1.1.文件、目录、路径文件、目录、路径n n2.File2.File类类 n n3.FileReader3.FileReader类和类和FileWriterFileWriter类类 文件文件(filefile)是存储在辅助存储器中的一组相关信息的集合是存储在辅助存储器中的一组相关信

21、息的集合,它可以存放程序、它可以存放程序、文档、图片、声音或视频信息等。为了便于对文件管理文档、图片、声音或视频信息等。为了便于对文件管理,系统允许用户给文件设系统允许用户给文件设置或取消有关的文件属性置或取消有关的文件属性,如只读属性、隐藏属性、存档属性、系统属性。如只读属性、隐藏属性、存档属性、系统属性。目录目录(directorydirectory)是一种特殊的文件,用以存放普通文件或其他的目录。磁盘是一种特殊的文件,用以存放普通文件或其他的目录。磁盘格式化时,系统自动地为其创建一个目录格式化时,系统自动地为其创建一个目录(称为根目录称为根目录)。用户可以根据需要在根。用户可以根据需要在

22、根目录中创建低一级的目录目录中创建低一级的目录(称为子目录称为子目录),子目录中还可以再创建下一级的子目录,子目录中还可以再创建下一级的子目录,从而形成树型目录结构,目录也可以设置相应的属性。从而形成树型目录结构,目录也可以设置相应的属性。路径路径(pathpath)是从盘符经过各级子目录到文件的目录序列。由于文件可以在不是从盘符经过各级子目录到文件的目录序列。由于文件可以在不同的磁盘、不同的目录中,所以在存取文件时,必须指定文件的存放位置。同的磁盘、不同的目录中,所以在存取文件时,必须指定文件的存放位置。1.1.文件、目录、路径文件、目录、路径 文件的存放位置通过路径来描述,路径的表示格式为

23、盘符文件的存放位置通过路径来描述,路径的表示格式为:盘符 目录名目录名文件名,文件名,比如在比如在C C盘根目录下的子目录盘根目录下的子目录WINDOWWINDOW下子目录下子目录JAVAJAVA中的文件中的文件myfile.javamyfile.java,应表示,应表示为为 C:WINDOWJAVAmyfile.java C:WINDOWJAVAmyfile.java 其中,其中,C:C:为驱动器名,表示为驱动器名,表示C C盘,而盘,而WINDOWJAVAWINDOWJAVA表示表示myfile.javamyfile.java所存储的所存储的位置,其中第一个位置,其中第一个“”表示根目录

24、其余的表示根目录,其余的“”为各子目录之间、最后一级子目录为各子目录之间、最后一级子目录与文件名之间的分隔符。与文件名之间的分隔符。在一个树型目录结构中,任一时刻,可以指定一个当前工作或操作的子目录,称其在一个树型目录结构中,任一时刻,可以指定一个当前工作或操作的子目录,称其为当前目录(又叫缺省目录)。凡从根目录开始的路径叫做绝对路径,应以为当前目录(又叫缺省目录)。凡从根目录开始的路径叫做绝对路径,应以“”“”开开头;凡不从根目录开始而从当前目录开始的路径叫相对路径,应从当前目录的下级目头;凡不从根目录开始而从当前目录开始的路径叫相对路径,应从当前目录的下级目录开始写起。录开始写起。例如,

25、假使上述文件例如,假使上述文件myfile.javamyfile.java完整的文件标识是完整的文件标识是C:WINDOWJAVAmyfile.javaC:WINDOWJAVAmyfile.java,如果当前磁盘,如果当前磁盘是是C C盘盘,可写成可写成WINDOWJAVAmyfile.javaWINDOWJAVAmyfile.java;如果当前目录是;如果当前目录是C:WINDOWC:WINDOW,可写成,可写成JAVAmyfile.javaJAVAmyfile.java;如果当前目录是;如果当前目录是C:WINDOWJAVAC:WINDOWJAVA,可改写成,可改写成myfile.java

26、myfile.java。java.io包中定义了一个包中定义了一个File类用来专门处理文件或获取文件的有关信息。类用来专门处理文件或获取文件的有关信息。Java语言中通过语言中通过File类来建立与磁盘文件的联系。类来建立与磁盘文件的联系。File类用来获取或设置文类用来获取或设置文件或目录的属性,但不支持从文件读取数据或者往文件里写数据件或目录的属性,但不支持从文件读取数据或者往文件里写数据(读取或写读取或写数据由文件流实现数据由文件流实现)。文件是许多程序的基本数据源和数据宿,是保存永久数据和共享信息的媒文件是许多程序的基本数据源和数据宿,是保存永久数据和共享信息的媒体。在体。在Java

27、中,目录也被当作文件,可以用中,目录也被当作文件,可以用list方法列出目录中的文件名。方法列出目录中的文件名。2.File类类类类 File File类的功能十分强大,它可以访问指定文件的所有属性,包括文件名称、类的功能十分强大,它可以访问指定文件的所有属性,包括文件名称、文件长度、文件的最后修改时间等,同时还可以利用文件长度、文件的最后修改时间等,同时还可以利用FileFile类来建立文件对象、类来建立文件对象、删除文件和改变文件名称等。删除文件和改变文件名称等。FileFile类具有下面三种构造函数:类具有下面三种构造函数:File(String path)File(String pat

28、h)File(String path,String name)File(String path,String name)File(String dir,String name)File(String dir,String name)其中参数意义如下:其中参数意义如下:String pathString path指定的路径指定的路径 String name String name执行的文件名执行的文件名 String dir String dir执行的目录执行的目录例如下面的语句是在例如下面的语句是在d d盘上建立一个名为盘上建立一个名为myfile.txtmyfile.txt的文件:的文件:F

29、ile f=new File(d:myfiel.txt);public String getName()public String getName()返回文件名返回文件名public String getPath()public String getPath()返回文件路径返回文件路径 public String getAbsolutePath()public String getAbsolutePath()返回文件绝对路径返回文件绝对路径public String getCanonicalPath()throws IOExceptionpublic String getCanonicalPa

30、th()throws IOException 返回文件的规范路径返回文件的规范路径public String getParent()public String getParent()返回文件的父目录返回文件的父目录public boolean exists()public boolean exists()判断文件是否存在判断文件是否存在public boolean canWrite()public boolean canWrite()判断文件是否可写判断文件是否可写public boolean canRead()public boolean canRead()判断文件是否可读判断文件是否可读p

31、ublic boolean isFile()public boolean isFile()判断对象是否是文件判断对象是否是文件public boolean isDirectory()public boolean isDirectory()判断对象是否是目录判断对象是否是目录 File File类的有关方法:类的有关方法:public native boolean isAbsolute()public native boolean isAbsolute()如果文件名为绝对名则返回真如果文件名为绝对名则返回真public long lastModified()public long lastMod

32、ified()返回文件最后修改日期返回文件最后修改日期public long length()public long length()返回文件长度返回文件长度public boolean mkdir()public boolean mkdir()创建目录创建目录public boolean rename To(File dest)public boolean rename To(File dest)重命名文件重命名文件public boolean mkdirs()public boolean mkdirs()创建目录及子目录创建目录及子目录public String list()public

33、String list()列出目录下的所有文件和目录列出目录下的所有文件和目录public String list(FilenameFilter filter)public String list(FilenameFilter filter)列出目录下的指定文件列出目录下的指定文件public boolean delete()public boolean delete()删除文件对象删除文件对象public int hashCode()public int hashCode()为文件创建散列代码为文件创建散列代码public boolean equals(Object obj)public b

34、oolean equals(Object obj)判断是否同对象判断是否同对象objobj相等相等public String toString()public String toString()返回文件对象的字符串描述返回文件对象的字符串描述 前面介绍的前面介绍的FileFile类用来创建一个文件,但是如何往文件里写数据或读类用来创建一个文件,但是如何往文件里写数据或读出文件中的内容出文件中的内容?这就需要使用下面流类:?这就需要使用下面流类:(1 1)文件输出流类文件输出流类FileWriter FileWriter (2 2)文件输入流类文件输入流类FileReaderFileReader

35、 3.3.FileWriterFileWriter类和类和FileReaderFileReader类类(1 1)字符文件输出流)字符文件输出流(FileWriter)(FileWriter)FileWriterFileWriter类可以在一指定的文件上建立一个文件输出流,也可以建立一个文件类可以在一指定的文件上建立一个文件输出流,也可以建立一个文件同时实例化为文件输出流。流提供了将字符写到文件中的方法。如果用同时实例化为文件输出流。流提供了将字符写到文件中的方法。如果用FileWriteFileWrite来打来打开一个只读文件会产生开一个只读文件会产生IOExcptionIOExcption异

36、常。异常。FileWriterFileWriter类有两种构造方法:类有两种构造方法:构造方法一构造方法一:File f=File f=newnew File(d:t1.txt)File(d:t1.txt);/建立文件建立文件 FileWriter f1=FileWriter f1=newnew FileWriter(f);FileWriter(f);/建立文件输出流建立文件输出流 构造方法二构造方法二:(建立文件同时实例化为文件输出流建立文件同时实例化为文件输出流)FileWriter f2=FileWriter f2=newnew FileWriter(d:t1.txt)FileWrite

37、r(d:t1.txt);第一种方法是先建立一个文件对象第一种方法是先建立一个文件对象f f,然后再建立一个输出流,然后再建立一个输出流f1f1,并使输出流,并使输出流f1f1和和文件文件f f相连接。这种情况下,可以通过对象相连接。这种情况下,可以通过对象f f对该文件作进一步的分析对该文件作进一步的分析,比如比如,显示文件显示文件的属性、大小等。第二种方法就是将第一种方法的二步合成一步,相对来说更方便一的属性、大小等。第二种方法就是将第一种方法的二步合成一步,相对来说更方便一些,但不能做文件分析等其它工作。些,但不能做文件分析等其它工作。注意:写完后一定要关闭注意:写完后一定要关闭输出流输出

38、流,数据才真正地写到了文件中!,数据才真正地写到了文件中!(1)write(char c)将一个字符写到文件的末尾将一个字符写到文件的末尾 (2)write(char b)将一个字符数组写到文件的末尾将一个字符数组写到文件的末尾 (3)close()关闭输出流关闭输出流 FileWriter类的最重要的方法是类的最重要的方法是write()与与close():例例.在在d d盘上建立一个名为盘上建立一个名为myfile.txtmyfile.txt的文件,并写入两串字符。的文件,并写入两串字符。import java.io.*;public class FileOutputpublic stat

39、ic void main(Stringargs)throws Exception File f=new File(d:myfile.txt);FileWriter f1=new FileWriter(f);f1.write(abcdefghij);f1.write(xyz);f1.close();(2)字符文件输入流 FileReaderFileReader类可以在一指定的文件上实例化一个文件输入流,类可以在一指定的文件上实例化一个文件输入流,FileReaderFileReader类流提供了从文件中读取一个字符或者一组字符方法。类流提供了从文件中读取一个字符或者一组字符方法。FileRead

40、erFileReader类的构造方类的构造方法都有可能出现法都有可能出现FileNotFoundExcptionFileNotFoundExcption异常。异常。构造方法一:构造方法一:File f=File f=newnew File(d:t1.txt);File(d:t1.txt);FileReader f1=FileReader f1=newnew FileReader(f);FileReader(f);构造方法二:构造方法二:FileReader f2=FileReader f2=newnew FileReader(d:t1.txt);FileReader(d:t1.txt);这两种

41、建立输入流的方法与前面建立输出流的两种方法意义完全类似。这两种建立输入流的方法与前面建立输出流的两种方法意义完全类似。(2 2)字符文件输入流)字符文件输入流(FileReader)(FileReader)FileReader类的最重要的方法是类的最重要的方法是read()与与close():(1)read()读一字符,返回读入的字符的整型表示读一字符,返回读入的字符的整型表示 (2)read(char b)读入字符放到字符数组读入字符放到字符数组b中并返回实际读入的字符数。如果所定中并返回实际读入的字符数。如果所定义的字符数组容量小于获得的字符数,则运行时将产生一个义的字符数组容量小于获得的

42、字符数,则运行时将产生一个IOException例外情况。例外情况。(3)read(char b,int off,int len)读入读入len个字符放到数组个字符放到数组b下标下标off开始的位置中,开始的位置中,并返回实际读入的字符数并返回实际读入的字符数 (4)close()关闭输入流关闭输入流 例例.将将d d盘上名为盘上名为myfile.txtmyfile.txt的文件的内容输出到屏幕。的文件的内容输出到屏幕。import java.io.*;public class FileInputpublic static void main(Stringargs)throws Excepti

43、on File f=new File(d:myfile.txt);FileReader f1=new FileReader(f);char a=new char(int)f.length();f1.read(a);System.out.println(a);f1.close();要建立要建立(或打开或打开)一个文件并对它进行写或读,需要如下几一个文件并对它进行写或读,需要如下几步:步:(1)(1)用用FileFile类建立类建立(或打开或打开)一个文件;一个文件;(2)(2)用用FileWriter(FileReader)FileWriter(FileReader)类建立输出类建立输出(输入输

44、入)流;流;(3)(3)调用调用write(read)write(read)方法进行写方法进行写(读读);(4)(4)关闭输出关闭输出(输入输入)流。流。字符文件输入字符文件输入/输出方法小结输出方法小结 平常所使用的文件中,有很多是二进制文件,它们以字节作为数据处理单位。对这平常所使用的文件中,有很多是二进制文件,它们以字节作为数据处理单位。对这些文件就要使用字节流来读写了,其实字符文件也可以用字节流来进行读写。些文件就要使用字节流来读写了,其实字符文件也可以用字节流来进行读写。对字节流对字节流文件进行读写的流类是:文件进行读写的流类是:FileInputStream 字节文件输入流字节文件

45、输入流 FileOutputStream 字节文件输出流字节文件输出流 字节流文件字节流文件1.FileInputStream1.FileInputStreamFileInputStreaFileInputStreamm类的方法:类的方法:int available()返回可读入的字节数返回可读入的字节数void close()关闭输入流,并释放任何与该流有关的资源关闭输入流,并释放任何与该流有关的资源protected void finalize()当读到无用信息时,关闭该流当读到无用信息时,关闭该流FileDescriptor getFD()返回与该流有关的文件描述符返回与该流有关的文件描

46、述符(即文件的完整路径)(即文件的完整路径)int read()从输入流中读取一个字节的数据从输入流中读取一个字节的数据int read(byteb)将数据读入到一个字节数组中将数据读入到一个字节数组中int read(byteb,int off,int len)读入读入len个字节数据放到数组个字节数据放到数组b的的off开始的位置中开始的位置中long skip(long n)跳过输入流上的跳过输入流上的n个字节个字节void close()关闭输出流,并释放任何该流有关的资源关闭输出流,并释放任何该流有关的资源protected void finalize()当写到无用信息时,关闭该流当

47、写到无用信息时,关闭该流File Descriptor getFD()返回与该流有关的文件描述符返回与该流有关的文件描述符(即文件的完整路径)(即文件的完整路径)void write(int b)将一个字节数据写到输出流中将一个字节数据写到输出流中void write(byte b)将字节数组中的数据写到输出流中将字节数组中的数据写到输出流中long skip(long n)跳过输出流上的跳过输出流上的n个字节个字节 2.FileOutputStream2.FileOutputStreamFileOutputStreaFileOutputStreamm类方法:类方法:缓冲区流输入和输出缓冲区流

48、输入和输出1.BufferedInputStream 缓冲区流建立在节点流之上缓冲区流建立在节点流之上,对节点流中数据进行某些加工对节点流中数据进行某些加工,并提供一些友好的方法供用户进行输并提供一些友好的方法供用户进行输入、输出操作以及流控制。入、输出操作以及流控制。例如例如,BufferedInputStream,BufferedInputStream可以对任何种类的输入流进行带缓冲区的封装以达到性能的改善可以对任何种类的输入流进行带缓冲区的封装以达到性能的改善 (可减少程序可减少程序 I/O I/O 操作次数,提高程序执行效率操作次数,提高程序执行效率 )。JaveJave利用缓冲区流可

49、以在读利用缓冲区流可以在读/写数据的同时对写数据的同时对数据进行处理。数据进行处理。使用缓冲区流时要注意:使用缓冲区流时要注意:必须将缓冲区流和某个节点流必须将缓冲区流和某个节点流(前面介绍的都是节点流前面介绍的都是节点流)连接连接 在程序中,连接是通过在缓冲区流的构造方法中指定入口参数在程序中,连接是通过在缓冲区流的构造方法中指定入口参数节点流来实现的。如:节点流来实现的。如:FileInputStream in=FileInputStream in=newnew FileInputStream(text);FileInputStream(text);BufferedInputStream

50、bufin=BufferedInputStream bufin=newnew BufferedInputStream(in);BufferedInputStream(in);实现了缓冲区流实现了缓冲区流bufinbufin和文件输入流和文件输入流inin连接。连接。1.BufferedInputStream1.BufferedInputStream 对对I/OI/O进行缓冲是一种常见的性能优化方法。进行缓冲是一种常见的性能优化方法。JaveJave的的BufferedInputStreamBufferedInputStream类类可以对任何的可以对任何的InputStreamInputStre

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服