文件字节流

FileInputStream

单个字节读取:

public static void main(String[] args) throws Exception {
        //创建文件字节流FileInputStream对象,并指定文件路径
        FileInputStream fileInputStream = new FileInputStream("D:\\stu\\aaa.txt");
        //读取文件
        int data = 0;//定义data接收读取到的数据
        //单个字节读取
        while ((data = fileInputStream.read()) != -1) {//如果data!=-1,则代表当前有读取到数据。data==-1时,则代表该数据已经读取完毕
            //这里直接输出data打印的数据的话,打印出的是实际数据所对应的ASCLL编码,所以需要强转为char
//            System.out.println(data);
            System.out.print((char) data);
        }
        //关闭文件字节流FileInputStream对象
        fileInputStream.close();
    }

 一次读出多个字节:

public static void main(String[] args) throws Exception {
        //创建文件字节流FileInputStream对象,并指定文件路径
        FileInputStream fileInputStream = new FileInputStream("D:\\stu\\aaa.txt");
        //读取文件
        //定义buf缓冲区用于接收读取到的数据。
        //这里暂定长度为5个字节,如果实际字节长度超过5个字节,则可以多次读取;
        byte[] buf = new byte[5];
        //读取单个字节
        //1、多次读取
        int count = 0;
        while ((count = fileInputStream.read(buf)) != -1) {
            System.out.println(new String(buf));
        }
        //关闭文件字节流FileInputStream对象
        fileInputStream.close();
    }

 注意事项:

System.out.println(new String(buf));
        
这里如果最后一次有效数据长度未达到5个字节时,会出现缓存遗留问题。所以建议优化为下面的方式:

System.out.println(new String(buf, 0, count));

根据count读取的字节长度来进行输出

 

FileOutputStream

public static void main(String[] args) throws Exception {
        //创建文件输出流对象FileOutputStream对象 name:文件地址;append:为false时,数据会覆盖原文件。为true时,在原数据尾部追加写入
        FileOutputStream fileOutputStream = new 
        FileOutputStream("D:\\stu/bbb.txt", false);

        //写入文件 单个字节输出,可以使用ASCII码,也可以使用char字符
        fileOutputStream.write(97);
        fileOutputStream.write('1');

        //关闭文件输出流对象FileOutputStream对象
        fileOutputStream.close();
}
  

  

posted @ 2022-12-13 02:10  Amireux-126  阅读(45)  评论(0)    收藏  举报