• day068:字符流读、写数据,及其注意事项、flush和close方法、字符缓冲流


    目录

    一、字符流

    1.字符流=字节流+码表

    2.字符流写数据(FileWriter)步骤

    代码示例

    3.字符流读数据(FileReader)步骤

    代码示例

    二、注意事项

    三、 flush和close方法

    代码示例

    四、字符缓冲流

    1.字符缓冲输入、输出流

    2.代码示例


    一、字符流

    1.字符流=字节流+码表

    2.字符流写数据(FileWriter)步骤

    • 创建字符输出流对象
    • 写数据
    • 释放资源

    代码示例

    (1)一次只写一个字符:

    1. public class FileWriterDemo_01 {
    2. public static void main(String[] args) throws IOException {
    3. //创建一个字符输出流对象
    4. //FileWriter fw= new FileWriter(new File("myFileWriter"));//方法一
    5. FileWriter fw = new FileWriter("myFileWriter\\b.txt");//方法二
    6. //写出数据
    7. fw.write(97);
    8. fw.write(98);
    9. fw.write(99);
    10. //关流
    11. fw.close();
    12. }

    (2)一次写一个字符数组:
     

    1. public static void main(String[] args) throws IOException {
    2. //创建一个字符输出流对象
    3. //FileWriter fw= new FileWriter(new File("myFileWriter"));//方法一
    4. FileWriter fw = new FileWriter("myFileWriter\\b.txt");//方法二
    5. //写出数据
    6. char [] chars = {97,98,99,100};
    7. fw.write(chars);
    8. //关流
    9. fw.close();
    10. }

    (3)一次写一个字符数组的一部分:

    1. public static void main(String[] args) throws IOException {
    2. //创建一个字符输出流对象
    3. //FileWriter fw= new FileWriter(new File("myFileWriter"));//方法一
    4. FileWriter fw = new FileWriter("myFileWriter\\b.txt");//方法二
    5. //写出数据
    6. char [] chars = {97,98,99,100,101,102,103,104,105};
    7. //0索引开始,一次写三个
    8. fw.write(chars,0,3);
    9. //关流
    10. fw.close();
    11. }

    (4)写一个字符串:
     

    1. public static void main(String[] args) throws IOException {
    2. //创建一个字符输出流对象
    3. //FileWriter fw= new FileWriter(new File("myFileWriter"));//方法一
    4. FileWriter fw = new FileWriter("myFileWriter\\b.txt");//方法二
    5. //写出数据
    6. String line ="我爱中国!";
    7. fw.write(line);
    8. //关流
    9. fw.close();
    10. }

    (5)写字符串的一部分:
     

    1. public static void main(String[] args) throws IOException {
    2. //创建一个字符输出流对象
    3. //FileWriter fw= new FileWriter(new File("myFileWriter"));//方法一
    4. FileWriter fw = new FileWriter("myFileWriter\\b.txt");//方法二
    5. //写出数据
    6. String line ="我爱中国!";
    7. fw.write(line,0,2);
    8. //关流
    9. fw.close();
    10. }

    3.字符流读数据(FileReader)步骤

    • 创建字符输入流对象
    • 读数据
    • 释放资源

    代码示例

    (1)字符流一次读取一个数据:

    1. public static void main(String[] args) throws IOException {
    2. FileReader fr = new FileReader("myFileWriter\\b.txt");
    3. int ch;
    4. while ((ch=fr.read())!=-1){
    5. System.out.println((char) ch);
    6. }
    7. fr.close();
    8. }

    (2)字符流一次读取多个字符:

    1. public static void main(String[] args) throws IOException {
    2. FileReader fr = new FileReader("myFileWriter\\b.txt");
    3. //定义一个字符数组,长度为1024
    4. char[] chars = new char[1024];
    5. int len;
    6. while ((len = fr.read(chars)) != -1) {//把获取内容后的字符数组传入进去
    7. System.out.println(new String(chars, 0, len));//把获取的内容转化为字符串进行展示;
    8. }
    9. fr.close();
    10. }

    二、注意事项

    1.如果文件不存在,则自动创建文件,但要保证其父级文件路径存在

    (如:myFileWriter\\a.txt,要创建a.txt文件,就要保证父级文件路径myFileWriter的存在)

    2.如果文件已经存在,则自动清空其中的内容

    3.如果写入的是int型的整数,则输出的是码表的对应字母;写入的是String型,则输出的也是String型

    三、 flush和close方法

    • flush():刷新流,还可以继续写数据
    • close():关闭流,释放资源,但在关闭之前会先刷新流。一旦关闭,就不能再写数据

    代码示例

    1. public class FileWriterDemo_06 {
    2. public static void main(String[] args) throws IOException {
    3. //创建一个字符输入流对象
    4. //FileWriter fw= new FileWriter(new File("myFileWriter"));//方法一
    5. FileWriter fw = new FileWriter("myFileWriter\\b.txt");//方法二
    6. //写出数据
    7. String line = "我爱中国!";
    8. fw.write(line);
    9. // fw.flush(); //刷新流
    10. fw.write("666");
    11. // fw.flush();
    12. fw.close(); //关闭流
    13. }

    四、字符缓冲流

    1.字符缓冲输入、输出流

    • 字符缓冲输出流(BufferedWriter):可以将数据高效的写出
    • 字符缓冲输入流(BufferedReader):可以将数据高效的读出到内存

    2.代码示例

    (1)字符缓冲输入流:

    1. public static void main(String[] args) throws IOException {
    2. //创建一个字符缓冲输入流,里面传入相应的字符输入流
    3. BufferedReader br = new BufferedReader(new FileReader("myFileWriter\\c.txt"));
    4. //读取数据
    5. char [] chars = new char[1024];
    6. int len;
    7. while ((len=br.read(chars))!=-1){
    8. System.out.println(new String(chars,0,len));
    9. }
    10. //关闭流
    11. br.close();
    12. }

    (2)字符缓冲输出流:
     

    1. public static void main(String[] args) throws IOException {
    2. //创建一个字符缓冲输出流,里面传入相应的字符输出流
    3. BufferedWriter bw = new BufferedWriter(new FileWriter("myFileWriter\\c.txt"));
    4. //写数据
    5. bw.write(97);//写一个数据
    6. bw.write("\r\n");
    7. char [] chars ={97,98,99,100};//写一个数组
    8. bw.write(chars);
    9. bw.write("\r\n");
    10. bw.write("哈哈");//写一个字符串
    11. bw.write("\r\n");
    12. String line ="abcdefg";//写一个字符串的部分
    13. bw.write(line,0,5);
    14. bw.write("\r\n");
    15. //刷新流
    16. bw.flush();
    17. //关闭流
    18. bw.close();
    19. }

  • 相关阅读:
    【iconfont图标】vue引入并使用阿里巴巴iconfont图标流程
    重绘、重排区别以及如何避免
    自定义Dynamics 365实施和发布业务解决方案 - 8. Dynamics 365门户简介
    基于单片机的温湿度检测及远程控制系统设计
    Android studio在Ubuntu桌面上 创建桌面图标,以及导航栏图标
    Java笔记:Arthas-Java线上异常排查
    【微处理器】基于FPGA的微处理器VHDL开发
    【Linux】部署及发布单机项目及前后端分离的项目
    【MySQL高级】SQL优化
    分布式事务Seata
  • 原文地址:https://blog.csdn.net/m0_57466457/article/details/127952049