收藏 分销(赏)

面向对象技术---第十章输入输出流.jsp.ppt

上传人:仙人****88 文档编号:14118788 上传时间:2026-06-26 格式:PPT 页数:32 大小:132.50KB 下载积分:10 金币
下载 相关 举报
面向对象技术---第十章输入输出流.jsp.ppt_第1页
第1页 / 共32页
面向对象技术---第十章输入输出流.jsp.ppt_第2页
第2页 / 共32页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第十章 输入与输出,输入输出类库,输入和输出是程序与用户之间沟通的桥梁,程序与用户进行信息交互的重要手段。,Java,提供了专用于输入输出功能的包,Java.io,,,其中包含,5,个非常重要的类,所有与输入输出有关的类都继承了这,5,个类。它们是,InputStream,、,OutputStream,、,Reader,、,Writer,和,File,。,Java,的输入输出是以流(,stream),的方式进行处理的。流是在计算机的 输入、输出操作中流动的数据序列。,Java,按流的单位分有位流(字节流)和字符流;按流动方向分为输入流和输出流。,输入输出流,程序,输入流,输出流,键盘,打印机,显示器,数据,磁盘文件,流、程序、外设之间的关系,输入流类,InputStream,和输出流,OutputStream,是两个最基本的输入输出抽象类,用于处理字节流。,Reader,和,Writer,提供了以字符流读取和写入数据的方法。,分别由上述类对象生成相应的对象。,InputStream,类,InputStream,类中包含了一套所有输入流都需要的方法,可以完成最基本的从输入流读取数据的功能。,当,Java,程序需要从外设中读入数据时,先创建一个适当类型的输入流类对象来完成与外设的连接,然后再调用执行该新建对象的特定方法,实现对相应外设的操作。,InputStream,子类对象继承,InputStream,类的如下方法,read(),方法、定位指针的方法、,close(),方法。,public,int,read(),每次执行时都从输入流的当前位置处读入一个字节的二进制数据,,c,此数作为低字节,高字节配全零,合成为一个,16,位整型量返回,若输入流当前位置无数据返回,-1,。,public,int,read(byte b),从输入流当前位置连续读入多个字,节,保存到数组,b,中,返回输入字节个数。,定位指针的方法,public long skip(long n);,将指针从当前位置向后跳,n,个字节,public void mark();,在,指,定位置做一个标记,public void reset();,将指针移到标记位置,public void close();,当输入流使用完毕后,可以调用该方法将其关闭,断开,Java,程序与外设数据源的联系,释放此连接所占用的系统资源。,InputStream,子类的继承关系,InputStream,FileInputStream,对本地磁盘文件进行读,取,操作,FilterInputStream,是抽象类,DataInputStream,具备数据类型或格式转换,BufferedInputStream,具备缓冲功能,OutputStream,类,OutputStream,类中包含所有输出流都要使用的方法。当,Java,程序需要向某外设输出数据时,先要创建一个输出流类对象,通过该对象实现与外设的连接,再利用,OutputStream,类提供的方法将数据写入该外设中。,OutputStream,类是一个抽象类,不能直接创建,OutputStream,类对象,而应该创建它的某个子类的对象。,子类继承的方法有:,Write(),方法、,flush(),方法和,close(),方法,public void,write(int,c);,将参数,c,对应的字符写入输出流,public void write(char array);,将字符数组,array,中全部字符顺序写入到输出流,public void flush();,强制清空缓冲区,public void close();,关闭输出流,断开,Java,程序与外设数据源的连接,释放此连接所占用的系统资源,OutputStream,子类的继承关系,OutputStream,FileOutputStream,对本地磁盘文件进行写入操作,FilterOutputStream,是抽象类,PrintStream,提供流的格式化输出功能,DataOutputStream,具备数据类型或格式转换,BufferedOutputStream,具备缓冲功能,Reader,类,Reader,类用来以字符方式从流中读入数据。,Reader,类中包含了一套所有字符输入流都需要的方法,可以完成最基本的从字符输入流读取数据的功能。,Reader,是一个抽象类,所以实际应用中创建的对象是,Reader,某个子类的对象,通过该子类对象与外,设,数据源连接,。,Reader,子类继承,Reader,类的如下方法,read(),方法、定位指针方法和,close(),方法,public,int,read();,读一个字符,public,int,read(char array);,读多个字符,定位指针的方法,public long skip(long n);,public void mark();,public void reset();,将指针从当前位置向后跳,n,个字符,在指针位置做一个标记,将指针移动到标记的位置,public void close();,当输入流使用完毕后,可以调用该方法将其关闭,断开,Java,程序与外设数据源的联系,释放此连接所占用的系统资源,Reader,BufferedReader,InputStreamReader,FileReader,具备缓冲功能的字符输入流,从字节输入流转换成字符输入流,用于从文件中读取数据,Reader,子类的继承关系,Writer,类,Writer,类用来以字符方式向输出流中写入数据。,Writer,类中包含了一套所有字符输出流都需要的方法,可以完成最基本的向字符输出流写入数据的功能。,Writer,是一个抽象类,所以实际应用中创建的对象是,Writer,某个子类的对象,通过该子类对象与外,设,数据源连接。,Writer,子类对象继承,Writer,类的如下方法,write(),方法、,flush(),方法和,close(),方法,Writer,子类的继承关系,Writer,PrintWriter,提供流的格式化输出功能,BufferedWriter,提供字符流输出缓冲功能,OutputStreamWriter,字符输出流转换成字节流,FileWriter,向文件中读入字符流,public void write();,将参数,c,对应的字符写入输出流,public void write(char array);,将字符数组,array,中的全部字符顺序写入输出流,public void flush();,强制清空缓冲区,public void close();,关闭输出流,断开,Java,程序与外设数据源的连接,释放所占有的系统资源,标准输入输出,为了减少程序开发人员,因频繁应用标准的输入输出设备,需要频繁地建立输入输出流对象的工作量,,Java,系统预先定义好,3,个流对象,分别表示标准输出设备、标准输入设备和标准错误设备。他们分别是,System.out,System.in,System.err,System,类的所有属性都是静态,static,的,调用时以类名,System,为前缀。上述,3,个流对象均为静态属性。,System.out,和,System.err,属于,PrintStream,类对象 对应外设为屏幕,System.in,属于,InputStream,类对象对应外设为键盘,/,从键盘输入字符,然后在屏幕上显示输入结果,import,Java.io,.*;,public class Standard10_1,public static void main(String,args,)throws,IOException,char c;,System.out.println,(,输入任一字符,);,c=(char)System.in.read();,System.out.println,(,输入的字符是:,+c);,使用,read(),方法时,应该对,IOException,类异常进行捕获或抛出,由于,IOException,类,在,Java.io,包中定义,因此程序第一句需要引用,Java.io,包,/,例,10_1,中改为一次输入字符串,单个输出字符,import,Java.io.IOException,;,public class StandardIn10_1_1,public static void main(String,args,),throwsIOException,char c;,System.out.println,(“,输入字符串,”,);,c=(char)System.in.read();,System.out.println,(“,输入的第一个字符是:,”,+c);,c=(char)System.in.read();,System.out.println,(“,输入的第二个字符是:,”,+c);,c=(char)System.in.read();,System.out.println,(“,输入的第三个字符是:,”,+c);,c=(char)System.in.read();,程序运行,屏幕显示,输入字符串,输入,Student,只输出,s t u,剩下,4,个字符待后继的,read(),继续读取,/,输,入,字符串、浮点数、整数、布尔量,然后在屏幕上显示输入结果,import,Java.io,.*;,public class Standard10_3 ,public static void main(String,args,)throws,IOException,InputStreamReader,i,in,=new,InputStreamReader(System.in,);,BufferedReader,bin=new,BufferedReader(iin,);,String s;,float f;,int,i=0;,boolean,b;,System.out.println,(,输入任一字符串,);,s=,bin.readLine,();,System.out.println,(,输入浮点数,);,f=,Float.parseFloat(bin.readLine,();,System.out.println,(,输入,整数,);,i=,Integer.parseInt(bin.readLine,();,System.out.println,(,输入,布尔量,);,b=new,Boolean(bin.readLine().booleanValue,();,System.out.println,(,输入的字符串:,+s);,System.out.println,(,输入的浮点数:,+f);,System.out.println,(,输入的整数:,+i);,System.out.println,(,输入的布尔量:,+b);,方 法,返回值类型,返回值,Boolean(“true”).booleanValue,();,boolean,true,Integer.parseInt(“123”),int,123,Long.parseLong(“375”),long,375,Float.parse.Float(“345.23”),float,345.23,Double.parse.Double(“67892.34”),double,67892.34,转换方法和样例,输入任一字符串,abc,输入浮点数,234.5,输入整数,34,输入布尔量,true,输入的字符串:,abc,输入的浮点数:,234.5,输入的整数:,34,输入的布尔量:,true,输出,输入,/,利用,read(),语句暂缓程序运行,便于调试程序,import,Java.io.IOException,;,public class Standard10_2,public static void main(String,args,)throws,IOException,for(int,i=1;i=5;i+),System.out.println(i,);,System.out.println,(,按回车键继续,.);,System.in.read();,System.out.println,(,程序继续运行,!);,利用,read(),方法从输入缓冲区读数据,缓冲区为空时,系统处于阻塞状态,等待用户输入数据的特点,可在程序的适当位置插入,System.in.read(),语句,暂停程序执行,以便检查程序在屏幕上显示的中间结果,标准输出,Java,的标准输出设备显示器用,System.out,表示,属于,PrintStream,类对象。利用,PrintStream,类,的,print(),或,println,(),方法可以非常方便地输出各类数据,它们将各类数据转换成字符串形式输出。,运行或编译,Java,程序是,各种错误信息输出到标准错误设备,该设备仍然是显示器,为了与标准输出的设备相区别,为标准错误设备定义,PrintStream,类对象时取名,System.err,文件操作,在程序中要对磁盘文件或目录进行操作,首先要对文件或目录建立连接,为此,Java,提供了,file,类。,File,类位于,Java.io,包中,但不是流类,它不负责输入或输出,而专门用来管理磁盘文件和目录。,File,类提供,3,种不同的构造方法,供用户以不同的参数形式灵活地接收文件和目录信息。,1、File(String path),2、,File(String path,,String name,),3、File(File dir,String name),File,对象的属性和操作,public String,getName,();,public String,getPath,();,public,boolean,exists();,public long length();,public,boolean,canRead,(),public,boolean,canWrite,(),public,boolean,equals(File file);,public,boolean,isFile,();,public,boolean,isDirectiry,();,public,boolean,renameTo(File,file);,public void delete();,获得文件名或目录名,获得文件或目录路径,文件或目录存在返回,true,返回文件字节数,可读文件返回值为,true,可写文件返回值为,true,与文件,file,相同返回,true,是文件返回,true,是目录返回,true,将文件改名为,file,表示的文件,删除文件,类的构造方法,FileOutputStream(,String,fileName,),参数,fileName,表示带路径的磁盘文件名,FileOutputStream(,File,file),参数,file,表示为磁盘文件所建立的,File,对象名,以字节流方式写入文件,首先要为磁盘文件建立一个,File,对象,再为该,File,对象建立,FileOutputStream,类,流,对象,然后才可以通过该类的,read(),方法逐个字节写入文件,写入操作完成后,利用,close(),方法关闭,FileOutputStream,流,在程序执行过程中会出现文件找不到或读写错误,因此程序中必须要对异常进行捕获和处理,/,本程序的功能是从键盘输入以“?”结束的一串字符,然后将该串中“?”,/,前面的字符顺序写入磁盘文件,d:Java,程序设计例题,newfile.txt,中,import,Java.io,.*;,public class File10_4 ,public static void main(String,args,)throws,IOException,char,ch,;,File file1=new File(D:,Java,课件王(,Java)Java,程序设计例题,newfile.txt,);,try,FileOutputStream,fout,=new FileOutputStream(file1);,System.out.println,(,输出结束保存在,d:Java,程序设计例题,newfile.txt,文件中,);,System.out.println,(,输入任一字符串,以,?,结束,);,ch,=(char)System.in.read();,while(ch,!=?),fout.write(ch,);,ch,=(char)System.in.read();,fout.close,();,catch(FileNotFoundException,e),System.out.println(e,);,catch(IOException,e),System.out.println(e,);,可通过写字板查看程序执行结果,以字节流方式读磁盘文件,首先要为磁盘文件建立一个,File,对象,再为该,File,对象建立,FileInputStream,类流对象,然后才可以通过该类的,read(),方法逐个字节从文件读入,读入操作完成后,利用,close(),方法关闭,FileInputStream,流,类的构造方法,FileInputStream(String,fileName,),参数,fileName,表示带路径的磁盘文件名,FileInputStream(File,file),参数,file,表示为磁盘文件所建立的,File,对象名,在程序执行过程中会出现文件找不到或读写错误,因此程序中必须要对异常进行捕获和处理,/,本程序的功能是将文件,d:Java,程序设计例题,newfile.txt,中保存的信息输入到,/,屏幕上,import,Java.io,.*;,public class File10_5 ,public static void main(String,args)throws,IOException,int,ch,;,File file1=new File(D:Java,课件王(,Java)Java,程序设计例题,newfile.txt,);,try,FileInputStream,fin=new FileInputStream(file1);,System.out.println(newfile.txt,文件中的信息为:,);,ch,=fin.read();,while(ch,!=-1),System.out.print(char)ch,);,ch,=fin.read();,fin.close();,catch(FileNotFoundException,e),System.out.println(e,);,catch(IOException,e),System.out.println(e,);,注意这里读出的数据,是通过程序方式写入的,向磁盘文件写入各类数据,Java,通过,DataInputStream,&,DataOutputStream,类实现各类数据的读写。向文件写入各种类型数据的具体步骤是:,1,、为磁盘文件建立,File,类对象,2,、为,File,对象建立,FileOutputStream,类流对象,建立其与磁盘文件的连接,3,、为,FileOutputStream,类流对象,建立,DataOutputStream,类对象,4,、利用,DataOutputStream,类的,writeInt(),writeFloat(),writeDouble(),writeBoolean,(),等方法,分别向文件中写入整型、单精度型、双精度型、布尔型等数据,5,、写入操作完成后,利用,close(),方法将流关闭,断开与磁盘文件的联系,import,Java.io,.*;,public class File10_6 ,public static void main(String,args)throws,IOException,int,ch,;,InputStreamReader,iin,=new,InputStreamReader(System.in,);,BufferedReader,bin=new,BufferedReader(iin,);,File file1=new File(d:Java,程序设计例题,dataInFile.txt,);,try,FileOutputStream,fout,=new FileOutputStream(file1);,DataOutputStream,dout,=new,DataOutputStream(fout,);,System.out.println,(,输入整数,);,int,i=,Integer.parseInt(bin.readLine,();,System.out.println,(,输入浮点数,);,float f=,Float.parseFloat(bin.readLine,();,System.out.println,(,输入布尔量,);,boolean,b=new,Boolean(bin.readLine().booleanValue,();,System.out.println,(,输入结果在,d:Java,程序设计例题,dataInFile.txt,文件中,);,dout.writeInt(i,);,dout.writeFloat(f,);,dout.writeBoolean(b,);,dout.close,();,catch(FileNotFoundException,e),System.out.println(e,);,catch(IOException,e),System.out.println(e,);,/,将这些数据写入磁盘文件,d:Java,程序设计例题,dataFile.txt,中,import,Java.io,.*;,public class File10_7 ,public static void main(String,args)throws,IOException,int,ch,;,File file1=new File(d:Java,程序设计例题,dataInFile.txt,);,File file2=new File(d:Java,程序设计例题,dataOutFile.txt,);,try,FileInputStream,fin=new FileInputStream(file1);,DataInputStream,din=new,DataInputStream(fin,);,int,i=,din.readInt,();float f=,din.readFloat,();,boolean,b=,din.readBoolean,();din.close();,FileOutputStream,fout,=new FileOutputStream(file2);,DataOutputStream,dout,=new,DataOutputStream(fout,);,dout.writeInt(i,);,dout.writeFloat(f,);,dout.writeBoolean(b,);,dout.close,();,System.out.println,(,输入文件是,d:Java,程序设计例题,dataInFile.txt,);,System.out.println,(,输出文件是,d:Java,程序设计例题,dataOutFile.txt,);,System.out.println,(,整数:,+i);,System.out.println,(,浮点数,+f);,System.out.println,(,布尔量,+b);,catch(FileNotFoundException,e),System.out.println(e,);,catch(IOException,e),System.out.println(e,);,本程序的功能是将文件,d:Java,程序设计例题,dataInFile.txt,中保存的各类数据复制到磁盘文件,d:Java,程序设计例题,dataOutFile.txt,中,从磁盘文件读取各类数据,以字符流方式写入文件,以字符流方式向文件写入或从文件读出数据,可以使用,Writer,和,Reader,类及其子类。上述两类是抽象类,不能建立它们的对象,只能通过它们的子类对象对文件进行操作。常用的,Writer,类的子类有,FileWriter,类和,BufferedFileWriter,类。,FileWriter,类,构造方法,FileWriter(,String,fileName,);,参数,fileName,表示带路径的磁盘文件名,FileWriter(,File,file);,参数,file,表示为磁盘文件所建立的,File,对象名,使用,BufferWriter,类的方法是,1,、为文件建立,FileWriter,对象,2,、再为该,FileWriter,对象建立,BufferWriter,类对象,3,、写入操作将使用所建立的,BufferWriter,类对象,/,本程序的功能是以字符流的方式写入文件,,/,将这些数据写入磁盘文件,d:Java,程序设计例题,dataFile.txt,中,import,Java.io,.*;,public class File10_8 ,public static void main(String,args)throws,IOException,InputStreamReader,iin,=new,InputStreamReader(System.in,);,BufferedReader,br,=new,BufferedReader(iin,);,FileWriter,fw1=new,FileWriter(d,:Java,程序设计例题,dataFile.txt,);,BufferedWriter,bw,=new BufferedWriter(fw1);,String s;,System.out.println,(,将输入的字符串写入,dataFile.txt,文件,);,while(true),System.out.println,(,输入一个字符串,:);,System.out.flush();/,清空输出缓冲区,s=,br.readLine,();/,每次读取一行字符串(按回车键前的所有字符),if(s.length,()=0)break;,bw.write(s,);,/,写入文件,dataFile.txe,bw.newLine,();/,写入换行符,bw.close,();,/,本程序的功能是以字符流的方式读取文件,,/,将,d:Java,程序设计例题,dataFile.txt,数据备份到,targetFile.txt,中,import,Java.io,.*;,public class File10_9 ,public static void main(String,args)throws,IOException,FileReader,fr1=new,FileReader(d,:Java,程序设计例题,dataFile.txt,);,BufferedReader,br1=new BufferedReader(fr1);,BufferedWriter,bw1=new,BufferedWriter(new,FileWriter(d,:Java,程序设计例题,targetFile.txt,);,int,lineNum,=0;,String s=br1.readLine();,System.out.println,(,输入文件是:,d:Java,程序设计例题,dataFile.txt,);,System.out.println,(,输出文件是:,d:Java,程序设计例题,targetFile.txt,);,while(s,!=null),lineNum,+;,bw1.write(String.valueOf(lineNum);,bw1.write();,bw1.write(s);,bw1.newLine();,s=br1.readLine();,bw1.close();,/,本程序的功能是以字符流的方式向显示器输出,,/,将,d:Java,程序设计例题,dataFile.txt,数据显示到屏幕上,import,Java.io,.*;,public class File10_10 ,public static void main(String,args)throws,IOException,FileReader,fr1=new,FileReader(d,:Java,程序设计例题,dataFile.txt,);,BufferedReader,br1=new BufferedReader(fr1);,BufferedWriter,bw1=new,BufferedWriter(new,OutputStreamWriter(System.out,);,int,lineNum,=0;,String s=br1.readLine();,System.out.println,(,输入文件是:,d:Java,程序设计例题,dataFile.txt,);,while(s!=null),lineNum,+;,bw1.write(String.valueOf(lineNum);,bw1.write();,bw1.write(s);,bw1.newLine();,/,System.out.println(s,);,s=br1.readLine();,bw1.close();,1,、何为流?根据流的方向,流可分为哪两种?,2,、,InputStream,,,OutputStream,,,Reader,和,Writer,类的功能有何异同?,3,、方法,newLine,(),的作用是什么?,4,、编写一个程序,其功能是将两个文件中的内容合并到一个文件中。,5,、编写一个程序,分别统计并输出文本文件中元音字母,a,e,I,o,u,的个数,6,、编写程序实现以下功能,(,1,)产生,5000,个,19999,之间的随机整数,将其存入文本文件,a.txt,中,(2),从文件中读取这,5000,个整数,并计算最大值、最小值和平均值,7,、编程实现以下功能,在屏幕上显示:输入姓名,然后将用户输入的姓名保存到文本文件中,重复进行,直到用户输入空字符串为止。,8,、编程实现以下功能,(,1,)从键盘输入姓名、学号、成绩,并保存到文本文件中,重复进行,直到输入空字符串为止,(,2,)从文件中读取各学生的成绩,并计算所有学生成绩的平均值、最大值和最小值,练习与习题,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服