定义一个文件输入流,调用read(byte[] b)方法将exercise.txt文件中的所有内容打印出来(byte数组的大小限制为5)。
- package com.itheima;
- import java.io.ByteArrayOutputStream;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- /**
- * 5、 定义一个文件输入流,调用read(byte[] b)方法
- * 将exercise.txt文件中的所有内容打印出来(byte数组的大小限制为5)。
- *
- * 分析:
- * 1、建立一个 FileInputStream 准备从文件中读出数据
- *
- * 2、因为每一次读取5个字节,而中文是两个字节,会出现中文 乱码,
- * 这时需要使用ByteArrayOutputStream 保每一次读取的数据,
- *
- * 3、等到数据等完的时候、再一次打印出ByteArrayOutputStream 全部值
- * 这样再解决乱码问题
- *
- *
- * @author dell
- *
- */
- public class Test5 {
- public static void main(String[] args) {
-
- //声明一个文件输入流
- FileInputStream in = null;
-
- //声明一个字节数组输出流
- ByteArrayOutputStream baos = null;
-
- //定义了一个5个字节的数组
- byte[] b = new byte[5];
-
- int len = 0;
-
- try{
-
- //定义一个FileInputStream 准备从文件读取字节数
- in = new FileInputStream("C:\\Users\\dell\\myEclipse\\exam\\src\\exercise.txt");
-
- //实例化一个ByteArrayOutputStream 对象
- baos = new ByteArrayOutputStream();
-
- //循环打印出字节
- while((len=in.read(b))!=-1){
-
- //向字节数组里面输出数据
- baos.write(b , 0 , len);
-
- }
-
-
- //得到字节输入流的内置Byte数组
- byte[] lens = baos.toByteArray();
- //将数据全部的数据打印出来
- System.out.println(new String(lens));
-
- }catch(FileNotFoundException e){
- //文件不存的时候,打印出的异常详细信息
- e.printStackTrace();
- System.out.println("文件找不到!");
-
- }catch(IOException e1){
- e1.printStackTrace();
- }
- finally{
- try{
- if(baos != null){
- //关闭字节数组的输出流
- baos.close();
- baos = null;
- }
-
- if(in != null){
- //关闭文件输入流
- in.close();
- in= null;
- }
- }catch(IOException e){
- e.printStackTrace();
- }finally{
- //加速虚拟机对其回收
- baos = null;
- in = null;
-
- }
- }
-
- }
-
- }
复制代码 这是我做了,,大家有更好的可以分享一下。
|
|