1、第11章 输入输出流,本章重点 流的基本概念 输入输出流机制 数据流链接 基本输入输出文件类和随机访问文件类,流的基本概念,所谓流是指同一台计算机或网络中不同计算机之间有序运动着的数据序列。Java把这些不同来源和目标的数据都统一抽象为数据流。数据流可分为输入流和输出流。流式输入输出的特点是数据的获取和发送沿数据序列的顺序进行,即每一个数据都必须等待排在它前面的数据,等前面的数据读入或送出之后才能被读写。,流的基本概念,输入输出流的分类,节点流和处理流,InputStream,Outputstream,FileInputStream类的构造方法,public FileInputStream(S
2、tring name)以指定名为name的文件为数据源建立文件输入流 例:FileInputStream in= new FileInputStream(“e:javaTFStream.java”) 则:创建了一个输入流对象 in, e:javaTFStream.java文件向程序输入数据。,TFStream.java,程序,FileInputStream类的构造方法,public FileInputStream(File file) 以指定名字的文件对象为数据源建立文件输入流 例:1. File file1=new File (“e:javaTFStream.java);2. FileInp
3、utStream in =new FileInputStream(file1); 则:创建了一个输入流对象 in(作用和上张ppt相同),FileOutputStream类的构造方法,public FileOutputStream(String name)以指定名字的文件为接收端建立文件输出流 public FileOutputStream(String name,Boolean append)以指定名字的文件为接收端建立文件输出流,并指定写入方式,append为true时输出文件字节被写到文件末尾 public FileOutStream(File file)以指定名字的文件对象为接收端建立
4、文件输出流,课堂练习,以e:javaTFStream.java的文件为输出端建立输出流(利用构造方法FileOutputStream(String name) 创建输出流),FileOutputStream out = new FileOutputStream(“e:javaTFStream.java”),FileInputStream类的成员方法,FileInputStream类中的成员方法被调用时会产生IOException异常,常用成员方法见表中的描述。,4.FileOutputStream类的成员方法,FileOutputStream类中的成员方法被调用时会产生IOException异
5、常,常用成员方法见表的描述。,FileInputStream举例,1.编写java应用程序,使用文件输入流读取文件本身并输出到屏幕上。 import java.io.*; public class TestFileInputStream public static void main(String args) int b = 0;FileInputStream in = null;try in = new FileInputStream(“ e:javaTestFileInputStream.java”);/创建输入流对象 catch (FileNotFoundException e) Sys
6、tem.out.println(“找不到指定文件“); System.exit(-1);,FileInputStream举例(续),try long num = 0;while(b=in.read()!=-1)/从输入流中读取一个字节数据,并以整数形式返回,若返回1,则以到文件尾。System.out.print(char)b); num+;in.close(); /关闭流 System.out.println();System.out.println(“共读取了 “+num+“ 个字节“); catch (IOException e1) System.out.println(“文件读取错误“
7、); System.exit(-1); ,FileInputStream、 FileOutputStream应用,以下代码完成了文件的复制,布置学生阅读该代码,并分析。,布置学生阅读书上例10.1,FileInputStream举例,文件的复制,如何完成?思考,讨论,作业,1.P205.7 2.实训指导书(实验49-52) 3.文件的复制(使用FileReader和FileWriter),Reader类,Reader类,Writer类,Reader类常用方法,Writer类常用方法,作业,1.TestFileReader.java(阅读分析) 2. TestFileWriter.java(阅读
8、分析),标准输入流,System.in 标准输入流public static final InputStream in “标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入。代码使用户能够从 System.in 中读取一个数: Scanner sc = new Scanner(System.in);int i = sc.nextInt();,标准输出流,System.out 标准输出流public static final PrintStream 标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出 。例如:System.out.println(data),
9、标准输入流举例1,public class TestInput public static void main(String args) /字符串String message;/int型int intValue ;/float型float floatValue ;,标准输入流举例(续),Scanner scan = new Scanner(System.in);System.out.print(“请输入一行字符串:“);message = scan.nextLine();System.out.println(“你输入的是:“ + message);System.out.print(“请输入一个
10、整数:“);intValue = scan.nextInt();System.out.println(“你输入的是:“+intValue);System.out.print(“请输入一个浮点型数:“);floatValue = scan.nextFloat();System.out.println(“你输入的浮点型数是:“+floatValue);/其余类似 ,标准输入流、带缓冲区处理流,import java.io.*; public class InputDemo public static void main(String args) throws IOException String
11、s; InputStreamReader ir; BufferedReader in; ir=new InputStreamReader(System.in); in=new BufferedReader(ir); while(s=in.readLine()!=null) System.out.println(“Read:“+s); s=in.readLine(); ,InputStreamReader ir; BufferedReader in; ir=new InputStreamReader(System.in); in=new BufferedReader(ir);,BufferedR
12、eade in= new BufferedReader(new InputStreamReader(System.in)); 画图理解,注意节点流和处理流的关系,对象流,ObjectInputStream类中的readObject()方法用于读取一个对象,而ObjectOutputStream类中的writeObject() 方法用于将对象保存在文件中。对象所属的类要实现Serializable,对象流举例,ObjectInputStream类中的readObject()方法用于读取一个对象,而ObjectOutputStream类中的writeObject() 方法用于将对象保存在文件中。对象所属的类要实现Serializable接口,作业,1.编写一个程序,分别统计并输出文本文件中元音字母a,o,e,i,o,u的个数。 2,编写一个程序,实现将从键盘输入的字符串中的所有数字去掉再输出,如:输入d4h3s89时,输出dhs。 (3)编写程序,将程序文件的源代码复制到程序文件所在目录下的temp.txt文件中。,