| 
 
| 定义一个文件输入流,调用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;
                                
                        }
                }
                
        }
        
}
 | 
 |