JAVA课程输入输出流.ppt

上传人:tia****nde 文档编号:12806038 上传时间:2020-05-25 格式:PPT 页数:41 大小:358.50KB
返回 下载 相关 举报
JAVA课程输入输出流.ppt_第1页
第1页 / 共41页
JAVA课程输入输出流.ppt_第2页
第2页 / 共41页
JAVA课程输入输出流.ppt_第3页
第3页 / 共41页
点击查看更多>>
资源描述
,14周上机作业1,处理备注中计算器中所有可能出现的异常。1:输入的操作数为字符串的异常2:第二个操作数为0时候出现的算数异常3:自定义异常类ex1:如果第一个操作数大于100认为是一种越界异常,写一个方法去判断,如果发现该异常,则抛出一个ex1类的异常对象,由main函数去捕获,答案在备注中,第十一章,输入与输出,ReaderBufferedReader具有缓冲功能字符输入流InputStreamReader字节输入流和字符输入流的桥梁FileReader从文件读入字符流,WriterPrintWriterBufferedWriterOutputStreamWriterFileWriter,OutputStream抽象类FileOutputStream文件操作写一个字节FilterOutputStream抽象类PrintStream格式化输出DataOutputStream特定格式输出BufferedOutputStream具缓冲功能,InputStream抽象类FileInputStream对文件操作FilterInputStream抽象类(定义方法给子类继承)DataInputStream特定数据格式BufferedInputStream具缓冲功能,记住他们,一、输入输出类库,Java的输入输出功能必须借助于输入输出类库Java.io包来实现,这个包中的类大部分是用来完成流式输入输出的流类。,流,流是指在计算机的输入与输出之间的数据的序列,流的特点是数据的发送和获取都是延数据序列顺序进行的,每个数据必须等待他前面的数据发送或读入后才能被读写。就流的运动方向而言,流可分为输入流(inputstream)和输出流(outputstream),输入流代表从外设流入计算机的数据序列;输出流代表从计算机流向外设的数据序列。,流的分类,Java中的数据流有位流(字节流)和字符流之分;,输入输出流类,在Java的流类中,最基本的类有两个:输入流类InputStream和输出流类OutputStream。这两个是具有最基本的输入输出功能的抽象类,其他流类都是为了方便处理各种特定流而设置的,属于InputStream或OutputStream的子类。,InputStream类,intread()从输入流读入数据,没有数据返回1intread(byteb)从输入流当前位置连续读入多个字节,保存到byte数组b中,返回读入的字节数目longskip(longn)跳过流中若干字节数voidmark()在流中标记一个位置voidclose()关闭流voidreset(),InputStream类的主要方法,InputStream子类的继承关系,InputStream抽象类FileInputStream对文件操作FilterInputStream抽象类(定义方法给子类继承)DataInputStream特定数据格式,每次可以读一个英文字符,例如double或float类型的一个数,用File或String对象产生,用FileInputStream对象产生,FileInputStream类流,FileInputStream流类的构造方法有两个:FileInputStream(StringfileName):参数fileName表示带路径的磁盘文件名。FileInputStream(Filefile):参数file表示为磁盘文件所建立的File对象名。,FileString,FileInputStream,OutputStream类的主要方法,voidwrite()向输出流写数据voidwrite(byteb)将byte型数组b全部字节顺序写到输出流voidflush()强制清空缓冲区voidclose()关闭输出流,OutputStream子类的继承关系,OutputStream抽象类FileOutputStream文件操作可以写一个字节FilterOutputStream抽象类PrintStream格式化输出DataOutputStream特定格式输出,FileOutputStreamfout=newFileOutputStream(file1);fout.write(ch);,用File或String对象产生,用FileOutputStream对象产生,FileOutputStream类流,FileOutputStream流类的构造方法有两个:FileOutputStream(StringfileName):参数fileName表示带路径的磁盘文件名。FileOutputStream(Filefile):参数file表示为磁盘文件所建立的File对象名,FileString,FileOutputStream,【任务9-1】利用字节流实现文件合并,源代码在备注中,packagech9.eg9_1;importjava.io.*;/使用字节流合并文件publicclassmergepublicstaticvoidmain(Stringargs)FileInputStreamfin1,fin2;FileOutputStreamfout;tryfin1=newFileInputStream(exampleeg9_1a.txt);fin2=newFileInputStream(exampleeg9_1b.txt);fout=newFileOutputStream(exampleeg9_1c.txt);intc=fin1.read();while(c!=-1)fout.write(c);System.out.print(char)c);/注意要转换类型c=fin1.read();fin1.close();,【任务9-1】,c=fin2.read();while(c!=-1)fout.write(c);System.out.print(char)c);/注意要转换类型c=fin2.read();fin2.close();fout.close();catch(FileNotFoundExceptione)e.printStackTrace();catch(IOExceptione)e.printStackTrace();,【任务9-1】,编写一个程序,分别统计并输出某文本文件中元音字母a,e,i,o,u的个数提示:建立一个FileInputStream对象指向某一个文本文件,用该对象来逐个读字符进行统计捕获FileNotFoundException、IOException两个异常,上机练习1,备注:文本文件自己准备,流的附加,Java中流的强大功能之一是可以将一个流附加到另一个流上。例如,基本输入流读取字节提供了read()方法,如果程序中要读取int数据(4个字节),可以将能输入int数据的流附加到某个流上。,DataOutputStream类流,步骤:建立FileOutputStream类对象指向某文件FileOutputStreamfout=newFileOutputStream(d:zhoujiangdataFile.txt);建立DataOutputStream类对象,DataOutputStreamdout=newDataOutputStream(fout);利用DataOutputStream类的writeInt(),方法写入各种类型数据;dout.writeInt(i);/i可以为各种数据类型操作完成后,将流关闭,断开与磁盘文件的联系。dout.close();,查API:FileOutputStream的构造方法,【任务9-2】将特定格式数据写入文件,源代码在备注中,FileOutputStreamfout;fout=newFileOutputStream(exampleeg9_2.txt);DataOutputStreamdout=newDataOutputStream(fout);dout.writeUTF(Tom,);dout.writeInt(80901);dout.writeDouble(67.5);,packagech9.eg9_2;importjava.io.*;/将特定数据写入文件,并读出来比较最大值。publicclassDataToFilestaticvoidInput()FileOutputStreamfout;try/将四个同学的信息写入文件fout=newFileOutputStream(exampleeg9_2.txt);DataOutputStreamdout=newDataOutputStream(fout);Stringnames=Tom,Jack,Rose,Susan;intNos=80901,20012,30056,90008;doublescores=67.5,78.0,88.5,90.5;for(inti=0;i4;i+)dout.writeUTF(namesi);dout.writeInt(Nosi);dout.writeDouble(scoresi);catch(FileNotFoundExceptione)e.printStackTrace();catch(IOExceptione)e.printStackTrace();,【任务9-2】,OutputStream抽象类FileOutputStream文件操作可以写一个字节FilterOutputStream抽象类PrintStream格式化输出DataOutputStream特定格式输出BufferedOutputStream具缓冲功能,staticvoidFindMax()tryFileInputStreamfin=newFileInputStream(exampleeg9_2.txt);DataInputStreamdin=newDataInputStream(fin);doublescore=0;for(inti=0;iscore)score=tmp;System.out.println(成绩最高分:+score);catch(FileNotFoundExceptione)e.printStackTrace();catch(IOExceptione)e.printStackTrace();publicstaticvoidmain(Stringargs)Input();FindMax();,【任务9-2】,所需知识:DataOutputStream的来源,OutputStream抽象类FileOutputStream文件操作可以写一个字节FilterOutputStream抽象类PrintStream格式化输出DataOutputStream特定格式输出,常用技巧;eg106FileOutputStreamfout=newFileOutputStream(d:zhoujiangdataFile.txt););DataOutputStreamdout=newDataOutputStream(fout);dout.write(i);/i可以为各种数据类型,产生顺序,6编写程序实现以下功能(用DataOutputSteam类参考例子106)1)产生5000个19999的随机数,并存到a.txt中2)从文件中读这5000个数,并计算最大值,最小值,和平均值,习题讲解:特定数据格式,上机练习2,9.4习题,一、选择题:1.下列数据流中,属于输入流的一项是()。A从内存流向硬盘的数据流B从键盘流向内存的数据流C从键盘流向显示器的数据流D从网络流向显示器的数据流,9.Java的输入输出功能必须借助于输入输出类库包来实现,这个包中的类大部分是用来完成流式输入输出的流类。()。ABjava.ioCjava.AWTDjava.sql,二、填空题1.、System.in.read()对应的输入设备是。2、.就流的运动方向而言,流可分为和。三、简答题:1、java中的输入流是指对程序输入吗?2、java中的输出流是指输出到程序中还是输出到硬盘的文件中?,Writer和Reader,以字符流方式向文件写入或从文件中读取数据,可以使用Writer和Reader类及其子类。Writer和Reader类都是抽象类,不能建立它们的对象,所以只能通过它们子类对象对文件进行操作。常用的Writer类的子类包括FileWriter类和BufferedFileWriter类。FileWriter类构造方法如下:FileWriter(StringfileName):参数fileName表示带路径的磁盘文件名。FileWriter(Filefile):参数file表示为磁盘文件所建立的File对象名。注:使用FileWriter进行文件操作时,为了减少和磁盘打交道的次数,常常使用具有缓冲功能的BufferedWriter类。,ReaderBufferedReader具有缓冲功能字符输入流InputStreamReader字节输入流和字符输入流的桥梁FileReader从文件读入字符流,WriterPrintWriterBufferedWriterOutputStreamWriterFileWriter,Reader类的主要方法,intread()intread(chararray)longskip()voidmark()voidclose()voidreset(),ReaderBufferedReader具有缓冲功能字符输入流InputStreamReader字节输入流和字符输入流的桥梁FileReader从文件读入字符流,常用:从字节输入流(标准输入)转换为字符输入流InputStreamReaderiin=newInputStreamReader(System.in);/System.in是一个静态的InputStream对象BufferedReaderbin=newBufferedReader(iin);Strings=bin.readline();/最终可以readline的bin是一个BufferedReader类的对象,Reader子类的继承关系,Writer类的主要方法,voidwrite()voidwrite(chararray)voidflush()voidclose(),Writer子类的继承关系,WriterPrintWriterBufferedWriterOutputStreamWriterFileWriter,只要将内容读出来就行,不区分字节、字符或者某数据类型所以一次读得越多越好,可以用BufferedReader类的readLine函数所以一次读得越多越好,可以用BufferedWriter类的write和newline函数,BufferedReader,BufferedWriter,新的需求,【任务9-3】利用字符流实现文件合并,源代码在备注中,/从br1指向的文件逐行拷贝内容到bw1指向的文件StringaLine=br1.readLine();while(aLine!=null)bw.write(aLine);bw.newLine();aLine=br1.readLine();,packagech9.eg9_3;importjava.io.*;/使用缓冲读者对象拷贝文件publicclasscopypublicstaticvoidmain(Stringargs)tryFileReaderfin1=newFileReader(exampleeg9_3a.txt);BufferedReaderbr1=newBufferedReader(fin1);FileReaderfin2=newFileReader(exampleeg9_3b.txt);BufferedReaderbr2=newBufferedReader(fin2);FileWriterfout=newFileWriter(exampleeg9_3c.txt);BufferedWriterbw=newBufferedWriter(fout);,【任务9-3】,StringaLine=br1.readLine();while(aLine!=null)bw.write(aLine);bw.newLine();aLine=br1.readLine();br1.close();/不关闭br1,将看不到新写入文件内容aLine=br2.readLine();while(aLine!=null)bw.write(aLine);bw.newLine();aLine=br2.readLine();br2.close();bw.close();/不关闭将看不到新写入文件内容catch(FileNotFoundExceptione)e.printStackTrace();catch(IOExceptione)e.printStackTrace();,【任务9-3】,用字符流读出一个文件3_a.txt的奇数行,另存到文件3_b.txt中,上机作业3,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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