第十章输入与输出.ppt
JAVA语言程序设计语言程序设计第十章第十章 输入与输出输入与输出10.1输入输出类库输入输出类库 输入和输出是程序与用户之间沟通的桥梁,程序与用输入和输出是程序与用户之间沟通的桥梁,程序与用户进行信息交互的重要手段。户进行信息交互的重要手段。Java 提供了专用于输入输出提供了专用于输入输出功能的包功能的包java.io,其中包含,其中包含5个非常重要的类,所有与输个非常重要的类,所有与输入输出有关的类都继承了这入输出有关的类都继承了这5个类。它们是个类。它们是InputStream、OutputStream、Reader、Writer和和File。Java的输入输出是以流(的输入输出是以流(stream)的方式进行处理的。流的方式进行处理的。流是在计算机的是在计算机的 输入、输出操作中流动的数据序列。输入、输出操作中流动的数据序列。Java 按流的单位分有位流(字节流)和字符流;按流动方向分按流的单位分有位流(字节流)和字符流;按流动方向分为输入流为输入流(input stream)和输出流和输出流(out stream)。输入输出流输入输出流程序程序输入流输出流键盘打印机显示器 数据数据流、程序、外设之间的关系流、程序、外设之间的关系输入流类输入流类InputStream和输出流和输出流OutputStream是两是两个最基本的输入输出抽象类,用于处理字节流。个最基本的输入输出抽象类,用于处理字节流。Reader和和Writer提供了以字符流读取和写入字节流的方法。提供了以字符流读取和写入字节流的方法。分别由上述类对象生成相应的对象。分别由上述类对象生成相应的对象。InputStream 类InputStream类中包含了一套所有输入流都需要的方类中包含了一套所有输入流都需要的方法,可以完成最基本的从输入流读取数据的功能。法,可以完成最基本的从输入流读取数据的功能。当当java程序需要从外设中读入数据时,先创建一个适当程序需要从外设中读入数据时,先创建一个适当类型的输入流类对象来完成与外设的连接,然后再调用类型的输入流类对象来完成与外设的连接,然后再调用执行该新建对象的特定方法,实现对相应外设的操作。执行该新建对象的特定方法,实现对相应外设的操作。InputStream 子类对象继承子类对象继承InputStream 类的如下方法类的如下方法read()方法、定位指针的方法、方法、定位指针的方法、close()方法。方法。1、read()方法方法Read方法是从输入流读入数据的方法,有两种不同的方法是从输入流读入数据的方法,有两种不同的read方法,其共同点只能逐字节的读取输入数据。以二进制的方法,其共同点只能逐字节的读取输入数据。以二进制的方式读取,而不能分解、重组和理解数据,使之变换、恢方式读取,而不能分解、重组和理解数据,使之变换、恢复到原来的有意义的状态。定义如下:复到原来的有意义的状态。定义如下:public int read()每次执行时都从输入流的当前位置处读入一个字节的二进每次执行时都从输入流的当前位置处读入一个字节的二进制数据,此数作为低字节,高字节配全零,合成为一个制数据,此数作为低字节,高字节配全零,合成为一个16位整型量返回,若输入流当前位置无数据返回位整型量返回,若输入流当前位置无数据返回-1。public int read(byte b)从输入流当前位置连续读入多个字节,保存到数组从输入流当前位置连续读入多个字节,保存到数组b中,中,返回输入字节个数。返回输入字节个数。2、定位指针的方法、定位指针的方法每个流都有一个指针,每次读入数据都是从指针位置开始进行。每个流都有一个指针,每次读入数据都是从指针位置开始进行。流在刚被创建时,指针位于流的第一个数据,以后每读入一个流在刚被创建时,指针位于流的第一个数据,以后每读入一个字节,指针后移一个字节位置,指向未被读取的下一个数据。字节,指针后移一个字节位置,指向未被读取的下一个数据。InputStream流中用来控制指针位置的方法有如下几个。流中用来控制指针位置的方法有如下几个。public long skip(long n);将指针从当前位置向后跳将指针从当前位置向后跳n个字节个字节public void mark();在指针位置做一个标记在指针位置做一个标记public void reset();将指针移到标记位置将指针移到标记位置 3、close()方法方法当输入流使用完毕后,可以调用当输入流使用完毕后,可以调用close方法将其关闭,断开方法将其关闭,断开Java程序与程序与外设数据源的链接,释放此连接所占用的系统资源。定义方法如下:外设数据源的链接,释放此连接所占用的系统资源。定义方法如下:public void close()InputStream子类的继承关系子类的继承关系InputStream FileInputStream 对本地磁盘文件进行读写操作对本地磁盘文件进行读写操作 FilterInputStream 是抽象类是抽象类 DataInputStream 具备数据类型或格式转换具备数据类型或格式转换 BufferedInputStream 具备缓冲功能具备缓冲功能OutputStream 类 OutputStream类中包含所有输出流都要使用的方法。类中包含所有输出流都要使用的方法。当当java程序需要向某外设输出数据时,先要创建一个输出流程序需要向某外设输出数据时,先要创建一个输出流类对象,通过该对象实现与外设的连接,再利用类对象,通过该对象实现与外设的连接,再利用OutputStream类提供的方法将数据写入该外设中。类提供的方法将数据写入该外设中。OutputStream类是一个抽象类,不能直接创建类是一个抽象类,不能直接创建OutputStream类对象,而应该创建它的某个子类的对象。类对象,而应该创建它的某个子类的对象。子类继承的方法有:子类继承的方法有:Write()方法、方法、flush()方法和方法和close()方法方法1、write()方法方法write()方法是向输出流写入数据的方法,有两种方法是向输出流写入数据的方法,有两种不同的方法,其共同点是只能逐字节的输出数不同的方法,其共同点是只能逐字节的输出数据,以二进制的方式写入,而不能对数据进行据,以二进制的方式写入,而不能对数据进行格式变换或类型转换。定义形式如下:格式变换或类型转换。定义形式如下:public void write(int c);将参数将参数c的低字节写入输出流的低字节写入输出流public void write(char array);将字符数组将字符数组array中全部字符顺序写入到输出流中全部字符顺序写入到输出流2、flush()方法()方法Write()方法所写的数据并没有直接传输到外设上,而是暂方法所写的数据并没有直接传输到外设上,而是暂时存放在流的缓冲区中,当缓冲区的时存放在流的缓冲区中,当缓冲区的 数据积累到一定程度数据积累到一定程度时,才统一执行一次向外设写的操作。但有时,缓冲区中时,才统一执行一次向外设写的操作。但有时,缓冲区中的数据未满时就需要将其写到外设中,此时应使用的数据未满时就需要将其写到外设中,此时应使用flush()方法强制清空缓冲区,并将缓冲区的现有数据写入外设。方法强制清空缓冲区,并将缓冲区的现有数据写入外设。public void flush();强制清空缓冲区强制清空缓冲区 3、Close()方法方法 当输出流使用完毕后,可以调用当输出流使用完毕后,可以调用close方法将其关闭,断方法将其关闭,断开开Java程序与外设数据源的连接,释放此连接所占用的资程序与外设数据源的连接,释放此连接所占用的资源。形式如下:源。形式如下:public void close();OutputStream子类的继承关系子类的继承关系OutputStream FileOutputStream 对本地磁盘文件进行写入操作对本地磁盘文件进行写入操作 FilterOutputStream 是抽象类是抽象类 PrintEtream 提供流的格式化输出功能提供流的格式化输出功能 DataOutputStream 具备数据类型或格式转换具备数据类型或格式转换 BufferedOutputStream 具备缓冲功能具备缓冲功能Reader类Reader类用来以字符方式从流中读入数据。类用来以字符方式从流中读入数据。Reader类中包类中包含了一套所有字符输入流都需要的方法,可以完成最基本含了一套所有字符输入流都需要的方法,可以完成最基本的从字符输入流读取数据的功能。的从字符输入流读取数据的功能。Reader是一个抽象类,所以实际应用中创建的对象是是一个抽象类,所以实际应用中创建的对象是Reader 某个子类的对象,通过该子类对象与外接数据源连接某个子类的对象,通过该子类对象与外接数据源连接。Reader子类继承子类继承Reader类的如下方法类的如下方法read()方法、定位指针方法和方法、定位指针方法和close()方法方法1、Read()方法方法Read()方法是从输入流读入数据的方法,有两种不同的方法是从输入流读入数据的方法,有两种不同的read方法,其共同点只能逐字节的读取输入数据。方法,其共同点只能逐字节的读取输入数据。public int read();读一个字符读一个字符,并将它作为并将它作为int类型返回给调用方法的类型返回给调用方法的语句,若当前输入流没有数据则返回语句,若当前输入流没有数据则返回-1,如出现错误,抛出,如出现错误,抛出IOException类型异常类型异常public int read(char array);读多个字符,保存到读多个字符,保存到array数组中,返回数组中,返回读入读入 的字节数目的字节数目2定位指针方法定位指针方法与与InputStream流一样流一样Reader类中用来控制指针位置的方法类中用来控制指针位置的方法有如下几个。有如下几个。public long skip(long n);将指针从当前位置向后跳将指针从当前位置向后跳n个字节个字节public void mark();在指针位置做一个标记在指针位置做一个标记public void reset();将指针移到标记位置将指针移到标记位置Reader BufferedReader InputStreamReader FileReader具备缓冲功能的字符输入流具备缓冲功能的字符输入流从字节输入流转换成字符输入流从字节输入流转换成字符输入流用于从文件中读取数据用于从文件中读取数据Reader子类子类的继承关系的继承关系 3、close()方法方法当输入流使用完毕后,可以调用当输入流使用完毕后,可以调用close方法将其关闭,断开方法将其关闭,断开Java程序与程序与外设数据源的链接,释放此连接所占用的系统资源。定义方法如下:外设数据源的链接,释放此连接所占用的系统资源。定义方法如下:public void close()Writer类类Writer类用来以字符方式向输出流中写入数据。类用来以字符方式向输出流中写入数据。Writer类中包含了一套所有字符输出流都需要的方法,可以完类中包含了一套所有字符输出流都需要的方法,可以完成最基本的向字符输出流写入数据的功能。成最基本的向字符输出流写入数据的功能。Writer是一个抽象类,所以实际应用中创建的对象是是一个抽象类,所以实际应用中创建的对象是Writer 某个子类的对象,通过该子类对象与外接数据源连接。某个子类的对象,通过该子类对象与外接数据源连接。Writer子类对象继承子类对象继承Writer类的如下方法类的如下方法write()方法、方法、flush()方法和方法和close()方法方法Writer子类的继承关系Writer PrintWriter 提供流的格式化输出功能提供流的格式化输出功能 BufferedWriter 提供字符流输出缓冲功能提供字符流输出缓冲功能 OutputStreamWriter 字符输出流转换成字节流字符输出流转换成字节流 FileWriter 向文件中读入字符流向文件中读入字符流public void write(int c);将参数将参数c对应的字符写入输出流对应的字符写入输出流public void write(char array);将字符数组将字符数组array中的全部中的全部字符顺序写如输出流字符顺序写如输出流public void flush();强制清空缓冲区强制清空缓冲区public void close();关闭输出流,断开关闭输出流,断开java程序与外设数据程序与外设数据源的连接,释放所占有的系统资源源的连接,释放所占有的系统资源10.2标准输入输出标准输入输出 为了减少程序开发人员需要频繁地建立输入输出流对为了减少程序开发人员需要频繁地建立输入输出流对象的工作量,而应用标准的输入输出设备,象的工作量,而应用标准的输入输出设备,java系统预先系统预先定义好定义好3个流对象,分别表示标准输出设备、标准输入设备个流对象,分别表示标准输出设备、标准输入设备和标准错误设备。他们分别是和标准错误设备。他们分别是System.out,System.in,System.errSystem 类的所有属性都是静态类的所有属性都是静态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 int/*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_2 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()继续读取继续读取/输出字符串、浮点数、整数、布尔量,然后在屏幕上显示输入结果输出字符串、浮点数、整数、布尔量,然后在屏幕上显示输入结果Readline是BufferedReader的方法,从键盘输入字符串import java.io.*;public class Standard10_3 public static void main(String args)throws IOException InputStreamReader iin=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);输入任一字符串输入任一字符串 abc 输入浮点数输入浮点数 234.5输入整数输入整数 34输入布尔量输入布尔量 true输入的字符串:输入的字符串:abc输入的浮点数:输入的浮点数:234.5输入的整数:输入的整数:34输入的布尔量:输入的布尔量:true输输出出输输入入方方 法法返回值类型返回值类型返回值返回值Boolean(“true”).booleanValue();booleantrueInteger.parseInt(“123”)int 123Long.parseLong(“375”)long375Float.parse.Float(“345.23”)float345.23Double.parse.Double(“67892.34”)double67892.34转换方法和样例转换方法和样例/利用利用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 10.3文件操作文件操作 在程序中要对磁盘文件或目录进行操作,首先要对文件或目在程序中要对磁盘文件或目录进行操作,首先要对文件或目录建立连接,为此录建立连接,为此java提供了提供了file类。类。File类位于类位于java.io包中,但包中,但不是流类,它不负责输入或输出,而专门用来管理磁盘文件和目不是流类,它不负责输入或输出,而专门用来管理磁盘文件和目录。录。一个文件类对象表示一个磁盘文件或目录,其对象属性中包一个文件类对象表示一个磁盘文件或目录,其对象属性中包含了文件或目录的相关信息,如长度、名称、所含文件个数等,含了文件或目录的相关信息,如长度、名称、所含文件个数等,其方法可以完成对文件的常用管理操作,如创建、删除等。其方法可以完成对文件的常用管理操作,如创建、删除等。对文件或者目录的操作前,首先要为文件或者目录建立对文件或者目录的操作前,首先要为文件或者目录建立File类对象。建立对象要提供文件或目录的名称或路径。类对象。建立对象要提供文件或目录的名称或路径。File类提供类提供3种不同的构造方法,供用户以不同的参数形式灵种不同的构造方法,供用户以不同的参数形式灵活地接收文件和目录信息。活地接收文件和目录信息。1、File(String path)2、File(String path,String name)3、File(File dir,String name)1、File(String path)String类的参数类的参数path指定所建对象对应的磁盘文件名或目录名及其指定所建对象对应的磁盘文件名或目录名及其路径。路径。如:如:File file1=new File(“c:jdkexamplefile.txt”)如果在目录如果在目录c:jdk下运行程序,也可以使用相对路径建立下运行程序,也可以使用相对路径建立file对象:对象:File file1=new File(“examplefile.txt”)2、File(String path,String name)path表示文件的路径,表示文件的路径,name表示文件名表示文件名 如:如:Stirng path=“c:jdkexemple”File file1=new File(path,”oldfile.txt”)File file1=new File(path,”newfile.txt”)3、File(File dir,String name)dir表示一个磁盘目录对应的表示一个磁盘目录对应的File对象,对象,name表示文件名或者目录名表示文件名或者目录名如:如:File dir1=new File(“c:javaexaple”)File file1=new File(dir1,”oldfile.txt”)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 类类流流对象,然后才可以通过该类的对象,然后才可以通过该类的write()方法逐个字节写入文件,写入操作完成后,利用方法逐个字节写入文件,写入操作完成后,利用close()方法方法关闭关闭FileOutputStream 流流在程序执行过程中会出现文件找不到或读写错误,因在程序执行过程中会出现文件找不到或读写错误,因此在程序中必须要对异常进行捕获和处理,输入输出此在程序中必须要对异常进行捕获和处理,输入输出类异常在类异常在Java.io包中定义包中定义/本程序的功能是从键盘输入以本程序的功能是从键盘输入以“?”结束的一串字符,然后将该串中结束的一串字符,然后将该串中“?”/前面的字符顺序写入磁盘文件前面的字符顺序写入磁盘文件 C:jdknewfile.txt中中 import java.io.*;public class File10_4 public static void main(String args)throws IOException char ch;File file1=new File(“C:jdknewfile.txt);try FileOutputStream fout=new FileOutputStream(file1);System.out.println(输出结束保存在输出结束保存在c:jdknewfile.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对象名对象名通过通过read方法向方法向FileInputStream流中写入字节数据时,流中写入字节数据时,可能会抛出可能会抛出IOExcepion类异,所以在程序执行过程中类异,所以在程序执行过程中必须对异常进行捕获和处理必须对异常进行捕获和处理/本程序的功能是将文件本程序的功能是将文件d:jdkdknewfile.txt中保存的信息输入到屏幕上中保存的信息输入到屏幕上 import java.io.*;public class File10_5 public static void main(String args)throws IOException int ch;File file1=new File(d:jdknewfile.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:jdkdataInFile.txt);try FileOutputStream fout=new FileOutputStream(file1);DataOutputStream dout=new DataOutputStream(fout);System.out.println(输入整数输入整数);int i=Integer.parseInt(System.in.readLine();System.out.println(输入浮点数输入浮点数);float f=Float.parseFloat(bin.readLine();System.out.println(输入布尔量输入布尔量);boolean b=new Boolean(bin.readLine().booleanValue();System.out.println(输入结果在输入结果在d:dkdataInFile.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:jdkdataFile.txt中中 import java.io.*;public class File10_7 public static void main(String args)throws IOException int ch;File file1=new File(d:jdkdataInFile.txt);File file2=new File(d:jdkdataOutFile.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:jdkdataInFile.txt);System.out.println(输出文件是输出文件是d:jdkdataOutFile.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:jdkdataInFile.txt中保存的各中保存的各类数据复制到磁盘文件类数据复制到磁盘文件d:jdkdataOutFile.txt中中 从磁盘文件读取各类数据从磁盘文件读取各类数据以字符流方式写入文件以字符流方式写入文件以字符流方式向文件写入或从文件读出数据,可以使用以字符流方式向文件写入或从文件读出数据,可以使用Writer和和Reader类及其子类。上述两类是抽象类,不能类及其子类。上述两类是抽象类,不能建立它们的对象,只能通过它们的子类对象对文件进行建立它们的对象,只能通过它们的子类对象对文件进行操作。常用的操作。常用的Writer类的子类有类的子类有FileWriter类和类和BufferedFileWriter类。类。FileWriter类类构造方法构造方法FileWriter(String fileName);参数参数fileName表示带路径的磁盘文件名表示带路径的磁盘文件名FileWriter(File file);参数参数file表示为磁盘文件所建立的表示为磁盘文件所建立的File对象名对象名使用使用BufferWriter类的方法是类的方法是1、为文件建立、为文件建立FileWriter对象对象2、再为该、再为该FileWriter对象建立对象建立BufferWriter类对象类对象3、写入操作将使用所建立的、写入操作将使用所建立的BufferWriter类对象类对象/本程序的功能是以字符流的方式写入文件,本程序的功能是以字符流的方式写入文件,/将这些数据写入磁