• 中文
    • English
  • 注册
  • 查看作者
  • Java-IO:字符输入输出流

    一.  前言

    在上文中,我们讲解了《字节输入输出流》,这里再看一下字符输入输出流。

    二.  字符输入流FileReader

    字符输入流和字节输入流的步骤大致相同,而且字符输入流可以防止乱码的发生。

    1. 字符输入流的操作步骤:

    2. 使用File类确定要操作的文件

    3. 使用InputStreamReader的子类FileReader进行对象实例化

    4. 进行读操作

    5. 释放资源

    package io.zhangjia.io;
    
    import java.io.*;
    
    public class Reader {
        public static void main(String[] args) throws IOException {
            //        1. 使用File确定要读取的文件
            File file = new File("E:\\zhangjia\\text.txt");
    //        2.  实例化FileReader
            FileReader reader = new FileReader(file);
    //        3.   开始读
            char[] chars = new char[128];//长度任意,因为是字符,所以即使给单数也不会乱码
            StringBuffer sb = new StringBuffer();
            int len = -1;
            while((len = reader.read(chars)) != -1) {
                String s = new String(chars,0,len);
                sb.append(s);
            }
            System.out.println(sb);
            reader.close();
        }
    }

    三.  字符输出流FileWriter

    字符输出流和字节输出流的步骤大致相同,而且字符输出流可以防止乱码的发生。

    1. 字符输入流的操作步骤:

    2. 使用File类确定要操作的文件

    3. 使用OutputStreamWriter的子类FileWriter 进行对象实例化

    4. 进行读操作

    5. 释放资源

    package io.zhangjia.io;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class Writer {
        public static void main(String[] args) throws IOException {
    //        1. 使用File确定要写入的文件
            File file = new File("E:\\zhangjia\\text.txt");
    //        2.  实例化FileWriter
    //        FileWriter writer = new FileWriter(file,true);//在原文件内容基础上添加内容
            FileWriter writer = new FileWriter(file);//替换源文件的内容
    //        3.   开始写
            String str = "张甲";
            writer.write(str);
            writer.close();
        }
    }

    四.  字节流和字符流的区别

    1. 如果将字节流和字符流的close()方法都删除的时候,字节流可以正常写入数据,而字符流不能

    2. 字符流操作看起来操作的是字符数据,其实在类中做了转换(char->byte),将转换好的数据存储在缓冲区,不执cLose方法,缓冲区的数据不会被输出,如果有需求不能关闭字符流,可以使用flush方法强制清空缓冲区

    3. 磁盘上的文件都是以字节形式进行存储,比如:媒体文件(图片、音频、视频),文档等等。开发中大部分情况都是使用字节流操作,如果操作的数据有中文,需要使用字符流,因为字节流可能造成中文乱码。

    山东省
  • 0
  • 0
  • 0
  • 1.3k
  • 请登录之后再进行评论

    登录
    单栏布局 侧栏位置: