Java文件与IO(一)之字节流

File类

1, 基本概念
File 类: 位于java.io包下, 表示文件和目录路径名的抽象表示形式

File类可以实现文件的创建,删除,重命名,得到路径和创建时间等等, 是唯一与文件本身有关的操作类.

2, File类的主要操作方法
这里写图片描述
这里写图片描述

字节流

1, IO流概述
IO流: 输入输出流(input/output)

流是一组有顺序的,有起点和终点的字节集合, 是对数据传输的总称或抽象. 即数据在两设备间的传输称为流 流的本质是数据传输, 根据数据传输特性将流抽象为各种类, 方便更直观的进行数据操作

这里写图片描述
IO流的分类:
根据处理数据类型的不同分为:字符流和字节流
根据数据流向不同分为:输入流和输出流
2, 字节输出流
OutputStream类定义
public abstract class OutputStream extends Object implements Closeable, Flushable 此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到InputStream类某个接收器 要向文件中输出, 使用FileOutputStream类

3, 字节输入流
InputStream定义:
ItSttdObjtiltClbl pu blic abstract class InputStreamextends Object implements Closeable
此抽象类是表示字节输入流的所有类的超类
FileInputStream从文件系统中的某个文件中获得输入字节

以上全是干货, 接下来我们通过代码来帮助理解

字节的流的读取和写入都有一般的格式, 代码如下

字节流的读取

/**
     * 字节输入流,从文件向程序输入数据 用字节流读取文本文件可能会引起乱码!
     */
    public static void read() {
        File file = new File("test.txt");
        InputStream in = null;
        try {
            in = new FileInputStream(file);
            StringBuffer sb = new StringBuffer();
            int len = -1;//每次真实读取的长度
            byte[] b = new byte[1024*1024];
            while( (len = in.read(b)) != -1 ){
                sb.append(new String(b, 0, len));
            }
            System.out.println(sb.toString());

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            //在用完流之后务必记得关闭流, 一般在finally中做关闭流的操作
            //因为不管是不是出现异常我们的流都需要关闭
            try {
                in.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

字节流的写入

    /**
     * 字节输出流,从程序向文件输出数据
     */
    public static void write() {
        File file = new File("test.txt");
        OutputStream out = null;
        // 针对文件创建一个输出流
        try {
            // 构造方法加true表示追加
            out = new FileOutputStream(file, true);
            String info = "对, 这是你的博客";
            out.write(info.getBytes());// 直接写入到文件中没有缓存

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            // 关闭
            try {
                out.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }// 释放占用的资源
        }
    }

测试类

public static void main(String[] args) {
        // TODO Auto-generated method stub
         write();
        read();
    }

运行结果
这里写图片描述

以上纯属个人见解, 如有不足之处希望有高人指出, 定感激不尽, 如有喜欢交流学习经验请给我留言谢谢.

原创文章, 转载请注明出处

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值