Java IO流 字符流 FileWriter

Java IO流 打印流 PrintStream PrintWriter
Java IO流 序列化流 ObjectOutputStream ObjectInputStream
Java IO流 缓冲流 BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter
Java IO流 字符流 目录拷贝
Java IO流 字符流 FileWriter
Java IO流 字符流 FileReader
Java IO流 字节流 FileInputStream
Java IO流 字节流 FileOutputStream

创建对象

两种方式
构造函数传入路径
构造函数传入传入File对象

String filePath = "src/main/java/io_stream/a.txt";
// 传入File类型
FileWriter fileWriter = new FileWriter(new File(filePath));
// 传入文件路径
FileWriter writer = new FileWriter(filePath);

文件写入

文件写入方式有五种
    write(int c)                                     写入一个字符
    write(String str)                             写入一个字符串
    write(String str, int off, int len)       写入一个字符串的一部分
    write(char[] cbuf)                           写入一个字符数组
    write(char[] cbuf, int off, int len)     写入字符数组的一部分
note:
    操作结束之后要调用close()方法关闭流

public class ByteStream {
    public static void main(String[] args) throws IOException {
        String filePath = "src/main/java/io_stream/a.txt";
        testFileWriter(filePath);
    }

    public static void testFileWriter(String filePath) throws IOException {
        FileWriter fileWriter = new FileWriter(new File(filePath));

        fileWriter.write(25105); // 我

        fileWriter.write("我是zdy"); // 我是zdy

        fileWriter.write("你好zdy", 0, 3); // 你好z

        char[] cbuf = {'你', '好', 'a'};
        fileWriter.write(cbuf); // 你好a
        
        char[] cbuf2 = {'你', '好', 'a'};
        fileWriter.write(cbuf2, 0, 1); // 你

        fileWriter.close();
    }
}

底层原理

创建字符输入流对象时
    底层会关联文件并创建缓冲区 (长度为8192的字节数组)
读取数据时
    底层判断缓冲区中是否有数据可以读取
        缓冲区中没有数据,就从文件中获取数据,装到缓冲区中,每次尽可能装满缓冲区,如果文件中也没有数据了,就返回-1,
        如果缓冲区中有数据,就冲缓冲区中读取,空参的read方法,一次读取一个字节,遇到中文一次读取多个字节,把字节解码并转成十进制返回,有参的read方法,把读取字节,解码,强转三步合并了,强转之后的字符放到数组中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值