字节流、字符流

字节流

字节输出流

FileOutputStream

使用字节输出流写出数据到文件:

 1.创建文件字节输出流对象
    FileOutputStream fos = new FileOutputStream("文件路径");

    2.调用wirte方法写数据到文件
    //             0   1   2    3   4
    byte[] buf = {97, 98, 99, 100, 101};
    // void write​(byte[] b) 将一个字节数组写入文件中(一次性写多个)
    fos.write(buf);

    // 3.关闭文件.必须要做的
    fos.close();

字节输入流

FileInputStream

使用字节输入流读取数据到程序:

FileInputStream fis = new FileIntpuStream("文件路径");
    int ch = fis.read(); // 读取一个字节

    byte[] buf = new byte[1024];
    int len = fis.read(buf); // 读取一个字节数组

    fis.close();

其中read(byte[])方法的原理:读取多个数据保存到byte[]中,返回读取的个数

字节和字符之间转换

1.String转byte[]使用哪个方法?

    String str = "你好,世界!";
    byte[] buf = str.getBytes();

2.byte[]转String使用哪个方法?

byte[] bytes = {97, 98, 99, 100};
String str = new String(bytes);

字符流

字符输出流

FileWirter

(一)使用FileWirter写数据到文件:

fr.wirte(字符);写入字符
fr.wirte(字符数组);写入字符数组
fr.wirte(字符数组,0, 个数);写入字符数组,并且可以选择写入开始位置,写入个数
fr.write(字符串);写入字符串
fr.write(字符串, 0, 个数);写入字符串,并且可以选择写入开始位置,写入个数

FileWriter fr = new FileWriter("文件路径");//创建文件字符输出流对象
    fr.wirte('a');
    fr.wirte(字符数组);
    fr.wirte(字符数组,0, 个数);

    fr.write(字符串);
    fr.write(字符串, 0, 个数);

    fr.close();//关闭流

(二FileWriter中关闭和刷新方法的区别:
flush: 刷新后还可以继续写数据。
close: close后不能再写数据, close也会刷新。

(三)FileWriter写数据实现换行和追加写
换行: “\r\n”
追加写: 构造方法append参数设置true

FileWriter fr = new FileWriter(“文件路径”, true);

字符输入流

FileReader

FileReader fr = new FileReader("文件路径");
    int ch = fr.read(); // 读取一个字符

    char[] chs = new char[1024];
    int len = fr.read(chs);
    // 读取一个字符数组的数据.读取到的多个数据保存chs数组中,返回读取到的个数。

IO异常处理

JDK7以前:


        FileReader fr = null;
        try {
            fr = new FileReader("文件路径");

            int ch = fr.read();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // null不能去调用方法
            if (fr != null) {
                try {
                    fr.close();
                } catch (IOException e) {
                    System.out.println("关闭流失败...");
                }
            }
        }

JDK7以后:

JDK7及以后的处理方式
自动关流
try (能自动关流的代码/创建IO流的代码) {
其他代码
} catch(异常类名 变量名) {}

try (FileReader fr = new FileReader("文件路径");
            FileWriter fw = new FileWriter("文件路径")
        ) {
            int ch = fr.read();
            System.out.println(ch);
        } catch (FileNotFoundException e) {
            System.out.println("文件没有找到");
        } catch (IOException e) {
            System.out.println("IO异常");
        }

Properties类:

Properties实现了Map接口,是一个集合,存储键值对的数据
Properties的每键值都是一个字符串
Properties内的数据可以很方便的保存到文件中

Properties类特有方法:
getProperty​(String key) 获取数据。
setProperty​(String key, String value) 添加数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值