系列文章目录

Java_IO——概述
Java_IO——字节流
Java_IO——字符流
Java_IO——缓冲流
Java_IO——属性集与转换流
Java_IO——序列化与反序列化、打印流
Java_IO——IO异常的处理


文章目录

  • 系列文章目录
  • 前言
  • 输入流
    • Reader类(字符输入流)
    • FileReader类(文件字符输入流,字符输入流(Reader)的子类(extends InputStreamReader extends Reader ))
    • 使用
  • 输出流
    • Writer类(字符输出流)
    • FileWriter类(文件字符输出流,字符输出流(Writer)的子类(extends InputStreamWriter extends Writer ))
    • 使用
      • 基础方法:
      • 续写与换行:

前言

使用字节流读取中文字符时,不会显示完整的字符,因为一个中文可能占用多个字节储存。所以,java提供了一些字符流类,以字符为单位,专门用于处理文本文件。

中文字符编码:
UTF-8:一个中文占三个字节
GKB:一个中文占两个字节


输入流

Reader类(字符输入流)

java.io.Reader抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。

它定义了字符输入流的基本共性功能方法:

  • public void close()
    关闭此输出流并释放与此流相关联的所有系统资源
  • public int read()
    从输入流读取一个字符
  • public int read(char[] cbuf)
    从输入流中读取一些字符,并将它们存储到字符数组cbuf中

FileReader类(文件字符输入流,字符输入流(Reader)的子类(extends InputStreamReader extends Reader ))

java.io.FileReader类是读取字符文件的便利类,构造时使用系统默认的字符编码和默认字节缓冲区
作用:把硬盘文件中的数据以字符的方式读取到内存中

  • 构造方法:

    • FileReader(String fileName)
    • FileReader(File file)
      参数:
      String fileName:文件路径
      File file:文件
  • 运行方式:
    1. 创造一个FileReader对象
    2. 会把FileReader对象指向读取的文件

使用

  1. 创建FileReader对象,构造方法中绑定要读取的数据源
  2. 调用FileReader对象中的方法read,读取文件
  3. 释放资源

优化:使用public int read(char[] cbuf)方法一次读取多个字符

Tip:输出时需要使用String类中的构造方法:
String(char[] value)
String(char[] value,int offset,int count)

  • String(char[] value)
  • String(char[] value,int offset,int count)
    将字符数组转换为字符串

    • 参数:

      • char[] value:目标数组
      • int offset:起始索引
      • int count:转换个数
package DemoReader;import java.io.FileReader;
import java.io.IOException;public class Demo01Reader {public static void main(String[] args) throws IOException {//1.创建FileReader对象,构造方法中绑定要读取的数据源FileReader fr = new FileReader("D:\\***\\a.txt");/*//2.调用FileReader对象中的方法read,读取文件int len = 0;while ((len = fr.read()) != -1) {System.out.println((char) len);}*///优化:使用public int read(char[] cbuf)方法一次读取多个字符char[] cbuf = new char[1024];int len = 0;//2.调用FileReader对象中的方法read,读取文件while ((len = fr.read(cbuf)) != -1) {System.out.println(new String(cbuf,0,len));}//3.释放资源fr.close();}
}

输出流

Writer类(字符输出流)

java.io.Writer抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地

它定义了字符输出流的基本共性功能方法:

  • void writer(int c)
    写入单个字符
  • void writer(char[] cbuf)
    写入字符数组
  • abstract void writer(char[] cbuf,int off,int len)
    写入字符数组的一部分
  • void writer(String str)
    写入字符串
  • void writer(String str,int off,int len)
    写入字符串的一部分
  • viod flush()
    刷新该流的缓冲
  • void close()
    关闭此流,但要先刷新

flush与close的区别:

  • flush:刷新缓冲区,流对象可以继续使用
  • close:先刷新缓冲区,然后通知系统释放资源,然后流对象就不能使用了
package DemoWriter;import java.io.FileWriter;
import java.io.IOException;public class Demo02FlushAndClose {public static void main(String[] args) throws IOException {//1.创建一个FileWriter对象,构造方法中传递写入数据的目的地FileWriter fw = new FileWriter("D:\\***\\d.txt");//2.调用FileWriter对象中的方法write,把数据写入到内存缓冲区中(字节变为字符的过程)fw.write(97);//3.调用FileWriter对象中的方法flush,把内存缓冲区中的数据,刷新到文件中fw.flush();//刷新后还可以继续使用fw.write(98);fw.flush();fw.write(99);//4.释放资源(会先把内存缓冲区中的数据,刷新到文件中)fw.close();//close后就不能再使用了fw.write(100);//IOException: Stream closed}
}

FileWriter类(文件字符输出流,字符输出流(Writer)的子类(extends InputStreamWriter extends Writer ))

java.io.FileWriter类是写出字符到文件的便利类,构造时使用系统默认的字符编码和字节缓冲区

作用:把硬盘文件中的数据以字符的方式写入到文件中

  • 构造方法:

    • FileWriter(String fileName)
      根据给定的文件名构造一个FileWriter对象
    • FileWriter(File file)
      根据给定的File对象构造一个FileWriter对象
  • 运行方式:
    1. 创建一个FileWriter对象
    2. 会根据构造方法中传递的文件/文件路径,创建文件
    3. 会把FileWriter对象指向创建好的文件

使用

基础方法:

  1. 创建一个FileWriter对象,构造方法中传递写入数据的目的地
  2. 调用FileWriter对象中的方法write,把数据写入到内存缓冲区中(字节变为字符的过程)
  3. 调用FileWriter对象中的方法flush,把内存缓冲区中的数据,刷新到文件中
  4. 释放资源(会先把内存缓冲区中的数据,刷新到文件中)
package DemoWriter;import java.io.FileWriter;
import java.io.IOException;public class Demo01Writer {public static void main(String[] args) throws IOException {//1.创建一个FileWriter对象,构造方法中传递写入数据的目的地FileWriter fw = new FileWriter("D:\\***\\d.txt");//2.调用FileWriter对象中的方法write,把数据写入到内存缓冲区中(字节变为字符的过程)fw.write(97);//3.调用FileWriter对象中的方法flush,把内存缓冲区中的数据,刷新到文件中
//        fw.flush();//4.释放资源(会先把内存缓冲区中的数据,刷新到文件中)fw.close();}
}

其他可以使用方法:

  • void writer(char[] cbuf)
    写入字符数组
  • abstract void writer(char[] cbuf,int off,int len)
    写入字符数组的一部分
  • void writer(String str)
    写入字符串
  • void writer(String str,int off,int len)
    写入字符串的一部分
package DemoWriter;import java.io.FileWriter;
import java.io.IOException;public class Demo03Writer {public static void main(String[] args) throws IOException {//创建一个FileWriter对象,构造方法中传递写入数据的目的地FileWriter fw = new FileWriter("D:\\***\\e.txt");//void writer(char[] cbuf)char[] cs = {'a','b','c','d','e'};fw.write(cs);//abstract void writer(char[] cbuf,int off,int len)fw.write(cs,2,3);//void writer(String str)fw.write("彭于晏");//void writer(String str,int off,int len)fw.write("123彭于晏",3,3);//释放资源fw.close();}
}

续写与换行:

续写:

  • 使用两个参数的构造方法:

    • FileWriter(String fileName,boolean append)
    • FileWriter(File file,boolean append)
      • 参数:

        • String fileName,File file:写入数据的目的地
        • boolean append:续写开关
          • true:续写,不覆盖源文件,继续在文件的末尾追加数据
          • foolse:不续写,创建一个新文件,覆盖源文件
  • 换行:
    • 写换行符:

      • windows:\r\n
      • linux:\n
      • mac:\r

Java_IO——字符流相关推荐

  1. Java基础(二十七)Java IO(4)字符流(Character Stream)

    字符流用于处理字符数据的读取和写入,它以字符为单位. 一.Reader类与Writer类 1.Reader类是所有字符输入流的父类,它定义了操作字符输入流的各种方法. 2.Writer类是所有字符输出 ...

  2. Java学习总结:42(字节流和字符流)

    字节流与字符流 上一节我们学习了文件操作类File,但是File类虽然可以操作文件,但是却不能操作文件的内容.如果要进行文件内容的操作,就必须依靠流的概念来完成.流在实际中分为输入流和输出流两种,输入 ...

  3. IO流 字符流 字节流 缓冲流 文件的复制

    IO流 IO概述 IO流就是一个管道,是用来在设备之间传输数据 input:相对于内存/程序 往进走输入流 output:相对于内存/程序 往硬盘写入 分类 根据数据进出方式 1.输出流: FileW ...

  4. Java IO 字节流与字符流 (三)

    概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...

  5. JavaIO操作(1)字节流和字符流-1

    3.2.字节流和字符流(核心) 使用File类执行的所有操作都是针对于文件本身,但是却没有针对于文件的内容,而要进行文件内容操作就需要通过Java之中提供的两组类完成: · 字节操作流(是在JDK 1 ...

  6. Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)...

    1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中  数据源: a.txt -- 读取数据 ...

  7. 关于java中的字符流的一个使用例子

    使用字符流的方式进行文件HelloWorld.java的读取并打印至控制台. package test;import java.io.BufferedInputStream; import java. ...

  8. java 字符流与字节流区别_JAVA 字符流与字节流的区别

    Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 U ...

  9. 字节流与字符流的区别(good!)

    字节流与字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了 ...

最新文章

  1. 论电子计算机在审计中的应用,计算机技术在审计中的应用领域分析.doc
  2. 如何巧妙的使用ArrayList的Clone方法
  3. 【案例】无线串口模块 星型网络组网 案例
  4. 高地址和低地址、高字节低字节、大小端模式的转换,存储顺序
  5. symfony2的中文视频教程更新中(原创),对Symfony感兴趣的学员可以看下
  6. MongoDB数据库操作---终端操作
  7. 将米转换为度(经纬度) 画圆上下多出来一些区域
  8. 知道半径 两点角度 怎么求坐标
  9. volley 框架简易封装使用
  10. ​​​​SSH Config Editor Pro :管理您的SSH配置文件
  11. Java基础知识笔记第八章:常用的实体类
  12. 深入了解-微信开发者工具
  13. python学习笔记之读取pdf文件库pdfplumber(一)
  14. kali Linux渗透测试教程.pdf
  15. 蓝桥杯 -罗马数字问题
  16. matlab人口数据,matlab中国人口
  17. Java高并发编程中Phaser的使用及详细介绍-刘宇
  18. 以梦为马,扬帆起航,双非人的2021,万字逐梦旅
  19. 巴拿赫空间的基本概念
  20. 【蓝桥杯】水题 基础练习 回文数 c语言

热门文章

  1. 那个系的女生不能追!!!
  2. Vue2(一):初识Vue、模板语法、数据绑定、el和data的两种写法、MVVM、数据代理、事件
  3. Fibonacci序列求偶数项的总和
  4. mysql创建表时添加范式,MySql三大范式与数据库设计和表创建常用语句
  5. MSP432入门——编译环境搭建
  6. 深入分析祥云杯easy_yii
  7. Node.js(0)
  8. 根据RGB数值判断颜色
  9. sicp计算机应用基础,Windows 7基础知识
  10. 这可能是神经网络 LeNet-5 最详细的解释了!