第8章 IO_补充案例.doc_第1页
第8章 IO_补充案例.doc_第2页
第8章 IO_补充案例.doc_第3页
第8章 IO_补充案例.doc_第4页
第8章 IO_补充案例.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

博学谷让IT教学更简单,让IT学习更有效第八章 补充案例案例8-1 FileInputStream读取文件数据一、案例描述 1、 考核知识点编 号:00108002名 称: 字节流读写文件-读取文件2、 练习目标 掌握如何使用FileInputStream字节流读取文件中数据3、 需求分析在操作文件时,最常见的就是从文件中读取数据并将数据写入文件,即文件的读写。针对文件的读操作,JDK专门提供了FileInputStream类。为了让初学者掌握FileInputStream字节流的使用,在案例中将针对读取并打印指定文件中的数据进行演示。4、 设计思路(实现原理)1) 创建一个文本文件fis.txt,在文件中编辑内容“Welcome to learn IO stream!”。2) 在同一目录下创建Example01.java文件,编写Example01类。3) 在main()方法中,通过FileInputStream(String name)构造方法创建文件输入字节流对象,并指定待读取文件fis.txt的路径。4) 在while循环条件中使用read()方法每次读取一个字节,同时在循环体中打印每次读取的数据,当read()方法返回值为-1时表示读取到文件结尾,循环结束。5) 使用close()方法,关闭流资源。二、案例实现import java.io.FileInputStream;import java.io.IOException;public class Example01 public static void main(String args) throws IOException / 创建字节输入流对象FileInputStream fis = new FileInputStream(fis.txt);/ 读取所有字节int by = 0;while (by = fis.read() != -1) System.out.print(char) by);/ 关闭字节输入流fis.close();运行结果如图8-1所示。图8-1 运行结果从运行结果可以看出,使用FileInputStream类成功地读取出fis.txt文件中的数据。三、案例总结1、通过FileInputStream(String name)构造方法创建FileInputStream对象时,传入的待读取文件的路径,可以是相对路径也可以是绝对路径。2、在读取文件数据时,必须保证文件是存在并且可读的,否则会抛出文件找不到的异常FileNotFoundException。3、FileInputStream类有三个重载的read()方法,如果方法返回值为-1,均表示已读取到了文件的结尾。4、为了使流对象所占用的系统资源得到释放,请记住调用FileInputStream类close()方法关闭字节流。5、思考一下:修改Example01类,如何实现只读取文件的单个字节?代码如下:import java.io.FileInputStream;import java.io.IOException;/* * 读取单个字节 */public class Example01 public static void main(String args) throws IOException / 创建字节输入流对象FileInputStream fis = new FileInputStream(fis.txt);/ 读取单个字节int i = fis.read();System.out.println(i);/ 关闭字节输入流fis.close();案例8-2 FileOutputStream写入数据一、案例描述 1、 考核知识点编 号:00108003名 称: 字节流读写文件-写入文件2、 练习目标 掌握如何使用FileOutputStream字节流向文件写入数据3、 需求分析与FileInputStream对应的是FileOutputStream,它是操作文件的字节输出流,专门用于把数据写入文件。为了让初学者掌握FileOutputStream字节流的使用,在案例中将通过演示向文本文件写入一段文字来学习。4、 设计思路(实现原理)1) 编写Example02类。2) 在main()方法中,通过FileOutputStream(String name)构造方法创建文件输出字节流对象,并指定写入的文件路径。3) 定义一段字符串,并将它转换成byte数组,然后通过write(byte b)方法,将byte数组写入到文件输出流中。4) 使用FileOutputStream类的close()方法,关闭流资源。二、案例实现import java.io.FileOutputStream;import java.io.IOException;public class Example02 public static void main(String args) throws IOException / 创建字节输出流对象FileOutputStream fos = new FileOutputStream(fos.txt);/ 用字符串转换字节数组byte b = 欢迎学习IO流.getBytes();/ 将数组中数据写入文件fos.write(b);/ 关闭输出流fos.close();程序运行后,会在当前目录下生成一个新的文本文件fos.txt,文件内容如图8-2所示:图8-2 fos.txt从运行结果可以看出,使用FileOutputStream类成功把数据写入文件。三、案例总结1、与FileInputStream读取的文件必须存在不同,FileOutputStream写入数据的文件不必是已存在的,因为该文件会被自动创建。2、FileOutputStream类有三个重载的write()方法,可以分别向文件中一次写入单个字符、字符数组以及数组的部分数据。3、思考一下:我们在使用案例中的方式,多次向fos.txt文件中写入不同数据时,发现文件中原有内容被新数据替代了。请问如果希望在原有文件内容之后追加新内容,如何修改Example02类?代码如下:import java.io.FileOutputStream;import java.io.IOException;public class Example02 public static void main(String args) throws IOException / 创建字节输出流对象FileOutputStream fos = new FileOutputStream(fos.txt,true);/ 用字符串转换字节数组byte b = ,真的很好玩.getBytes();/ 将数组内容写入文件fos.write(b);/ 关闭输出流fos.close();程序运行后,再次打开fos.txt,文件内容如图8-3所示:图8-3 fos.txt以上代码中使用了FileOutputStream的另一个构造方法FileOutputStream(StringfileName, booleanappend) 来创建文件输出流对象,当设置append参数值为true时表示追加内容,从上图可以看出新内容成功追加到原有内容以后。案例8-3 自定义缓冲区拷贝大文件一、案例描述 1、 考核知识点编 号:00108005名 称: 字节流的缓冲区2、 练习目标 掌握如何自定义缓冲区 掌握如何使用自定义缓冲区读、写文件 了解自定义缓冲区读写的优点3、 需求分析操作文件时一个个字节的读写,效率非常低,为了提高效率可以自定义一个字节数组作为缓冲区。为了让初学者掌握如何使用自定义缓冲区读写文件,案例中将演示使用字节流的自定义缓冲区拷贝“IO流.avi”文件到其它目录来学习。4、 设计思路(实现原理)1) 在当前目录下创建source和target文件夹,并在source文件夹中存放一个“IO流.avi”文件。2) 编写Example03类。3) 在main()方法中,分别创建文件字符输出流和文件字符输入流对象,并指定文件拷贝的源及目标路径。4) 自定义一个1024长度的字节数组作为缓冲区,然后通过输入流将源文件数据读取到缓冲区中,输出流再将缓冲区中数据写入到目标文件中,循环往复直到文件拷贝结束,并计算拷贝文件总耗时。5) 使用close()方法,关闭流资源。二、案例实现import java.io.*;public class Example03 public static void main(String args) FileInputStream fis = null;FileOutputStream fos = null;try / 创建文件字符输出流和文件字符输入流对象fis = new FileInputStream(sourceIO流.avi);fos = new FileOutputStream(targetIO流.avi);/ 创建字节数组,用于缓存读取的字节byte bys = new byte1024;int len = 0;long starttime = System.currentTimeMillis();/ 获取拷贝文件前的系统时间/ 读取到文件结束时,返回-1while (len = fis.read(bys) != -1) / 将缓冲区中的数据写入文件fos.write(bys, 0, len);long overtime = System.currentTimeMillis();/ 获取拷贝文件结束的系统时间System.out.println(拷贝文件消耗的时间为: + (overtime - starttime) + 毫秒); catch (IOException e) e.printStackTrace();throw new RuntimeException(拷贝文件失败!); finally try / 关闭流资源fis.close(); catch (IOException e) e.printStackTrace();throw new RuntimeException(输入流关闭失败!);try / 关闭流资源fos.close(); catch (IOException e) e.printStackTrace();throw new RuntimeException(输出流关闭失败!);程序运行结束后,打开target文件夹,发现source文件夹中的“IO流.avi”文件被成功拷贝到了target文件夹,如图8-4所示。 图8-4 拷贝结果程序运行结束后,会在命令行窗口输出拷贝文件所消耗的时间,如图8-5所示:图8-5 运行结果从运行结果可以看出,使用自定义缓冲区拷贝大文件成功,而且耗时较短。三、案例总结1、由于计算机性能等各方面原因,会导致每次拷贝文件所消耗的时间未必相同。2、在指定文件路径时使用了“”,这是因为在Windows目录路径基础上使用了转义符“”。3、为了保证IO流的close()方法必须执行,通常将关闭流的操作写在finally代码块中。4、思考一下:使用自定义缓冲区拷贝文件时效率高耗时短,请修改Example03类,在不使用缓冲区的情况下拷贝文件,打印所消耗的时间,并与使用缓冲区所耗时间比较。代码如下:import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class Example03 public static void main(String args) FileInputStream fis = null;FileOutputStream fos = null;try / 创建文件字符输出流和文件字符输入流对象fis = new FileInputStream(sourceIO流.avi);fos = new FileOutputStream(targetIO流.avi);/ 创建字节数组,用于缓存读取的字节int len = 0;long starttime = System.currentTimeMillis();/ 获取拷贝文件前的系统时间/ 读取到文件结束时,返回-1while (len = fis.read() != -1) / 将缓冲区中的数据写入文件fos.write(len);long overtime = System.currentTimeMillis();/ 获取拷贝文件结束的系统时间System.out.println(拷贝文件消耗的时间为: + (overtime - starttime) + 毫秒); catch (IOException e) e.printStackTrace();throw new RuntimeException(拷贝文件失败!); finally try / 关闭流资源fis.close(); catch (IOException e) e.printStackTrace();throw new RuntimeException(输入流关闭失败!);try / 关闭流资源fos.close(); catch (IOException e) e.printStackTrace();throw new RuntimeException(输出流关闭失败!);案例8-4 装饰设计模式的应用一、案例描述 1、 考核知识点编 号:00108006名 称: 装饰设计模式2、 练习目标 了解什么是装饰设计模式 掌握装饰设计模式的应用3、 需求分析装饰设计模式是通过包装一个类,动态地增强它的功能的一个设计模式,为了让初学者掌握装饰设计模式的应用,在案例将通过使用NewPerson类装饰Person类,完成为Person类增强“吃饭”功能来学习。4、 设计思路(实现原理)1) 编写Person类,定义eat()方法,表示“吃饭”功能2) 编写NewPerson类,定义一个有参构造方法,通过构造方法可以将Person对象传入该类,在NewPerson类定义newEat()方法,该方法对“吃饭”功能进行了扩展和增强。3) 编写Example04测试类,在main()方法中,分别通过Person和NewPerson对象调用装饰前后的吃饭功能。二、案例实现/* * 被装饰类 */class Person / 吃饭功能public void eat()System.out.println(正在吃饭);/* * 装饰类 */class NewPerson / 装饰类中拥有被装饰类的引用private Person p;/ 构造方法传入被装饰类的对象public NewPerson(Person p) this.p = p;/ 通过装饰类增强吃饭功能public void newEat() System.out.println(饭前小酒);p.eat();System.out.println(抽一根烟);System.out.println(饭后甜点);/* * 测试类Example04 */public class Example04 public static void main(String args) System.out.println(-装饰前-);Person p = new Person();p.eat();System.out.println(-装饰后-);/使用NewPerson类来装修Person类NewPerson np = new NewPerson(new Person();np.newEat();运行结果如图8-6所示。图8-6 运行结果从运行结果可以看出,通过装饰设计模式成功增强了“吃饭”功能,达到预期效果。三、案例总结1、装饰设计模式具有以下特点:(1) 装饰对象包含一个被装饰对象的引用。(2) 装饰对象接受所有来自客户端的请求,再把这些请求转发给被装饰的对象。(3) 装饰对象可以给被装饰对象增强功能。(4) 一般情况下装饰和被装饰对象会具有相同的接口。2、思考一下:装饰设计模式可以通过一个类增强另一个类的功能,而使用继承子类也可以对父类中的功能进行增强,针对增加功能这种情况请问使用装饰设计模式和继承有什么区别。案例8-5 字节缓冲流拷贝大文件一、案例描述 1、 考核知识点编 号:00108007名 称: 字节缓冲流2、 练习目标 了解什么是字节缓冲流 了解字节缓冲流的优点 掌握如何使用字节缓冲流拷贝文件3、 需求分析我们学习过使用自定义缓冲区高效读写文件,其实Java自身也提供了两个带缓冲的字节流,分别是BufferedInputStream和BufferdOutputStream。为了熟悉这两个字节缓冲流的使用,案例中将通过使用字节缓冲流一次读写一个字节数组的方式拷贝文件来学习。4、 设计思路(实现原理)1) 在source目录下存放“IO流.avi”文件,并确保target目录下没有上次拷贝遗留的文件。2) 编写Example05类。在main()方法中,分别创建缓冲字节输出流和缓冲字节输入流对象,并指定拷贝文件的源及目标路径。3) 定义一个字节数组作为缓冲区,缓冲输入流将源文件数据读取到缓冲区中,然后缓冲输出流将缓冲区中数据写入到目标文件中,循环往复直到文件拷贝结束,并计算拷贝文件总耗时。4) 使用close()方法,关闭流资源。二、案例实现import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/* * 字节缓冲流一次读写一个字节数组 */public class Example05 public static void main(String args) BufferedInputStream bis = null;BufferedOutputStream bos = null;try bis = new BufferedInputStream(new FileInputStream(sourceIO流.avi);bos = new BufferedOutputStream(new FileOutputStream(targetIO流.avi);byte b = new byte1024;int len = 0;long starttime = System.currentTimeMillis();/ 获取拷贝文件前的系统时间while (len = bis.read(b) != -1) bos.write(b, 0, len);long overtime = System.currentTimeMillis();/ 获取拷贝文件结束的系统时间System.out.println(拷贝文件消耗的时间为: + (overtime - starttime) + 毫秒); catch (IOException e) e.printStackTrace();throw new RuntimeException(拷贝文件失败!); finally if (bis != null) try bis.close(); catch (IOException e) e.printStackTrace();throw new RuntimeException(缓冲输入流关闭失败!);if (bos != null) try bos.close(); catch (IOException e) e.printStackTrace();throw new RuntimeException(缓冲输出流关闭失败!);程序运行结束后,打开target文件夹,发现source文件夹中的“IO流.avi”文件被成功拷贝到了target文件夹,如图8-7所示。 图8-7 拷贝结果程序运行结束后,会在命令行窗口打印拷贝文件所消耗的时间,如图8-8所示。图8-8 运行结果从运行结果可以看出,使用字节缓冲流一次读写一个字节数组的方式拷贝文件成功,并且速度较快。三、案例总结1、字节缓冲流在初次拷贝文件时耗时较长,之后耗时较少。2、思考一下:多次拷贝一个较大的文件,比较教材中的字节缓冲流一次读写一个字节方式,与案例8-3中自定义缓冲区方式,以及本案例中字节缓冲流一次读写一个字节数组方式三者之间,谁的拷贝耗时最多?比较后发现教材中的方式最慢。案例8-6 FileReader读取字符数据一、案例描述 1、 考核知识点编 号:00108008名 称: 字符流读取文件2、 练习目标 了解什么是FileReader字符流及其特点 了解FileReader和FileInputStream的区别 掌握如何使用FileReader字符流读取文本文件数据3、 需求分析如果想从文件中直接读取字符可以使用字符输入流FileReader,通过此流可以从关联的文件中读取一个或一组字符。为了让初学者掌握FileReader字符流的使用,在案例中将针对一次读取一个字符的方式读取文本文件来学习。4、 设计思路(实现原理)1) 创建一个文本文件fr.txt,在文件中输入内容“Welcome to learn IO stream!”。2) 在同一目录下创建Example06.java文件,编写Example06类。3) 在main()方法中,通过FileReader(String fileName)构造方法创建字符输入流对象,并指定待读取文件fr.txt的路径。4) 使用read()方法循环读取并输出数据,当方法返回值为-1时表示读取到文件结尾,循环结束。5) 使用close()方法,关闭流资源。二、案例实现import java.io.FileReader;import java.io.IOException;public class Example06 public static void main(String args) throws IOException / 创建字符输入流对象FileReader fr = new FileReader(fr.txt);int by = 0;/ 判断是否是文件的结尾while (by = fr.read() != -1) / 不是就打印出读取的字符System.out.print(char) by);/ 关闭字节输入流fr.close();运行结果如图8-9所示。图8-9 运行结果从运行结果可以看出,使用FileReader成功地读取出文本文件数据。三、案例总结FileReader和FileInputStream有非常多相似之处,但是FileReader每次读取的单位是一个字符,而FileInputStream每次读取的单位是一个字节。案例8-7 FileWriter写入字符数据一、案例描述 1、 考核知识点编 号:00108009名 称: 字符流写入文件2、 练习目标 了解什么是FileWriter字符流及其特点 了解FileWriter和FileOutputStream的区别 掌握如何使用FileWriter字符流向文件写入字符数据3、 需求分析我们学习过FileOutputStream写入数据,但是如果想向文本文件中写入字符数据,也可以使用FileWriter类。为了让初学者掌握FileWriter字符流的使用,案例中将通过FileWriter字符流向fw.txt文件中写入一串文字来学习。4、 设计思路(实现原理)1) 编写Example07类。2) 在main方法中,通过FileWriter(String fileName)构造方法创建字符输出流对象,并指定写入的文件路径。3) 通过write()方法将一段字符串直接写入到文件。4) 调用close()方法,关闭流资源。二、案例实现import java.io.FileWriter;import java.io.IOException;public class Example07 public static void main(String args) throws IOException / 创建字节输出流对象FileWriter fw = new FileWriter(fw.txt);/ 将数组中数据写入文件fw.write(欢迎学习IO流);/ 关闭输出流fw.close();程序运行后,会在当前目录下生成一个新的文本文件fw.txt,文件内容如图8-10所示。图8-10 fw.txt从运行结果可以看出,使用FileWriter成功把数据写入文件。三、案例总结FileWriter和FileOutputStream有非常多相似之处,但是FileWriter每次写入的单位是一个字符,而FileOutputStream每次写入的单位是一个字节。案例8-8 LineNumberReader读取加行号一、案例描述 1、 考核知识点编 号:00108010名 称: LineNumberReader 2、 练习目标 掌握如何使用LineNumberReader读取数据 掌握如何使用setLineNumber()和getLineNumber()方法设置和读取当前行号3、 需求分析如果想为文件内容加上行号,可以使用LineNumberReader,它是一个可以跟踪行号的输入流。为了让初学者掌握LineNumberReader的使用,案例中将通过演示读取“HelloWorld.java”文件并为每行代码加上行号输出来学习。4、 设计思路(实现原理)1) 编写“HelloWrold.java”文件,里面有一段HelloWorld程序。2) 在同一目录下,编写Example08类。3) 在main()方法中,创建LineNumberReader对象,并指定待读取文件“HelloWrold.java”的路径。4) 使用setLineNumber()方法设置起始行号为100,并使用readLine()方法循环一行行读取文件并输出,在输出时使用getLineNumber()添加当前行号,直至文件末尾。5) 调用close()方法,关闭流资源。二、案例实现import java.io.FileReader;import java.io.IOException;import java.io.LineNumberReader;public class Example08public static void main(String args)throws IOException LineNumberReader lnr = new LineNumberReader(new FileReader(HelloWorld.java);String line = null;lnr.setLineNumber(100);while(line = lnr.readLine()!=null)System.out.println(lnr.getLineNumber()+ +line);lnr.close();待读取的“HelloWrold.java”文件内容,如图8-11所示:图8-11 HelloWrold.java运行结果如图8-12所示。图8-12 运行结果运行结果显示正常,添加行号输出达到预期。三、案例总结setLineNumber()方法设置当前行号,getLineNumber()方法读取当前行号。在案例当前行号初始值设为100,输出时行号却是从101开始的,这是因为LineNumberReader类在读取到换行符(n)、回车符(r)或者回车后紧跟换行符时,会将行号自动加1。案例8-9 转换流拷贝文件一、案例描述 1、 考核知识点编 号:00108011名 称: 转换流2、 练习目标 了解什么是转换流 掌握如何使用InputStreamReader和OutputStreamWriter3、 需求分析有时字节流和字符流之间也需要进行转换,这时就需要用到转换流。在JDK中提供了两个类可以将字节流转换为字符流,它们分别是InputStreamReader和OutputStreamWriter。为了让初学者掌握转换流的使用,案例中将演示通过转换流拷贝文件并转成大写来学习。4、 设计思路(实现原理)1) 在source目录下编写“HelloWrold.java”文件,里面有一段HelloWorld程序。2) 在同一目录下,编写Example09类。3) 在main()方法中,创建文件字节输入和输出流对象,然后分别使用转换流包装,为提高效率,最后再通过缓冲流包装。4) 使用readLine()方法循环一行行读取源文件并转大写写入到目标文件,直至文件末尾。5) 调用close()方法,关闭流资源。二、案例实现import java.io.*;public class Example10 public static void main(String args) BufferedReader bfr = null;BufferedWriter bfw = null;try InputStream in = new FileInputStream(sourceHelloWorld.java);/ 字符的缓冲读取字节,将字节转成字符InputStreamReader isr = new InputStreamReader(in);/ 建立字符流缓冲区对象bfr = new BufferedReader(isr);OutputStream out = new FileOutputStream(targetHelloWorld.java);/ 字符数据,输出到字节,将字符数据转成字节OutputStreamWriter osw = new OutputStreamWriter(out);/ 建立字符流的缓冲区对象bfw = new BufferedWriter(osw);String line = null;while (line = bfr.readLine() != null) bfw.write(line.toUpperCase();bfw.newLine(); catch (IOException e) throw new RuntimeException(文件拷贝失败!); finally try if (bfw != null)bfr.close(); catch (IOException e) e.printStackTrace();throw new RuntimeException(输入流关闭失败!);try if (bfw != null)bfw.close(); catch (IOException e) e.printStackTrace();throw new RuntimeException(输出流关闭失败!);程序运行后,分别打开“source”和“target”目录下“HelloWorld.java”文件,结果如图8-13所示: 图8-13 拷贝结果从结果可以看出,使用转换流拷贝文件并转大写操作成功。三、案例总结在使用转换流时,只能针对操作文本文件的字节流进行转换,如果字节流操作的是一张图片,此时转换为字符流就会造成数据丢失。案例8-10 对象序列化与反序列化 一、案例描述 1、 考核知识点编 号:00108013名 称: ObjectInputStream和ObjectOutputStream类2、 练习目标 了解什么是序列化和反序列化 掌握如何使用ObjectInputStream和ObjectOutputStream实现对象的序列化和反序列化3、 需求分析使用ObjectOutputStream和ObjectInputStream可以实现对象的序列化和反序列化。为了让初学者掌握这两种类的使用,案例中将通过序列化Person对象到“oos.txt”文件,再反序列化读取该文件获取Person对象数据来学习。4、 设计思路(实现原理)1) 编写Person类,实现序列化接口,在类中定义name和age属性,生成get ()和set()方法,并重写toString()方法。2) 编写Example10类,在main()方法中通过ObjectOutputStream将赋值后的Person对象序列化到“oos.txt”文件。3) 通过ObjectInputStream读取该文件实现Person对象的反序列化,并打印该对象。二、案例实现import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;public class Example10public static void main(String args) throws Exception/ 创建序列化流对象ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(oos.txt);/ 创建对象Person p = new Person(马云, 26);/ 将Person对象输出到输出流中oos.writeObject(p);oos.close();/ 创建反序列化流对象ObjectInputStream ois = new ObjectInputStream(new FileInputStream(oos.txt);/ 从oos.txt中读取Person对象Object obj =ois.readObject();ois.close();/ 打印反序列化后的对象System.out.println(Person)obj);import java.io.Serializable;public class Person implements Serializable private static final long serialVersionUID = 333558257579870816L;private String name;private int age;public Person() public Person(String name, int age) = name;this.age = age;public String getName() return name;public void setName(String name) = name;public int getAge() return age;public void setAge(int age) this.age = age;/ 重写toString()方法public String toString() return Person name= + name + , age= + age + ;程序运行后,在当前目录下生成了“oos.txt”文件,如图8-14所示:图8-14 生成文件运行结果如图8-15所示。图8-15 运行结果三、案例总结值得注意的是,当对象进行序列化时,必须保证该对象实现Serializable接口,否则程序会出现NotSerializableException异常。案例8-11 DataInputStream和DataOutputStream 一、案例描述 1、 考核知识点编 号:00108013名 称: DataInputStream和DataOutputStream类2、 练习目标 掌握如何使用DataInputStream和DataOutputStream3、 需求分析如果只需存储对象的成员数据,这些成员数据的类型又都是基本数据类型,这时就可以使用DataInputStream和DatOutputStream。为了让初学者掌握DataInputStream和DataOutputStream的用法,案例中将演示使用这两个类先向“dos.txt”文件中写入UTF-8的字符串然后再读取来学习。4、 设计思路(实现原理)1) 编写Example11类。2) 在main()方法中通过DataOutputStream向“oos.txt”文件中,写入字符编码为UTF-8的字符串“你好”。3) 通过DataInputStream读取文件中该编码的字符串并打印。二、案例实现import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.FileInputStream;import ja

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论