当前位置: 首页 > article >正文

Java重修笔记 第六十四天 坦克大战(十四)IO 流 - 标准输入输出流、InputStreamReader 和 OutputStreamWriter

  • 标准输入输出流
1. System.in 标准输入流

        本质上是一个InputString,对应键盘,表示从键盘输入。

        定义:public final static InputStream in = null;

        所以 Scanner scanner = new Scanner(System.in); 会从键盘中获取数据

2. System.out 标准输出流

        本质上是一个OutputStream,对应显示器,不过被包装成了PrintStream,表示在显示器上输出。

        定义:public final static PrintStream out = null;

        所以 System.out.println(); 就是使用 out 对象将数据输出到显示器上。

  • 转换流

1. 为了解决使用读写源文件时出现的乱码问题(字符编码不一致),引出转换流

2. InputStreamReader 是 Reader 的子类,代码可以将 InputStream 字节流包装(转换)成指定编码的 Reader 字符流

3. OutputStreamWriter 是 Writer 的子类,可以将 OutputStream 字节流包装(转换)成指定编码的 Writer 字符流

4. 当处理存文本数据时,使用字符流的效率更高

  • InputStreamReader 类的常用方法
1. 使用特定编码方式包装字节输入流的构造方法

        public InputStreamReader(InputStream in, Charset cs)

        参数:in - 一个 InputStream 子类下的输入流

                   cs - 一个字符串类型的字符集

2. 获得该转换流所使用的编码方式

        public String getEncoding()

3. 关闭流

        public void close() throws IOException

        说明:不管包装了多少个流,只需要关闭最外层的流就行

public class InputStreamReader01 {
    public static void main(String[] args) throws IOException {
        // 演示使用转换流解决中文乱码的问题, 通过转换流 将字节流 转换成指定编码的字符流
        String filePath = "d:\\a.txt";
        FileInputStream fis = new FileInputStream(filePath);
        // 将字节流转换成转换流
        // InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
        InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8);
        // 将转换流又转换成包装流
        BufferedReader br = new BufferedReader(isr);
        // 读取
        String s = br.readLine();
        System.out.println("编码方式为: " + isr.getEncoding());
        System.out.println("读取到的第一行为: " + s);
        br.close();
    }
}

  • OutputStreamWriter 类的常用方法

1. 使用特定编码方式包装字节输出流的构造方法

        public OutputStreamWriter(OutputStream out, Charset cs)

        参数:out - 一个 OutputStream 子类下的输出流

                   cs - 一个字符串类型的字符集

2. 关闭流

        public void close() throws IOException

        说明:不管包装了多少个流,只需要关闭最外层的流就行,如果不关闭或刷新流,东西写不进去

public class OutputStreamWriter01 {
    public static void main(String[] args) throws IOException {
        String filePath = "d:\\a.txt";
        FileOutputStream fos = new FileOutputStream(filePath, true);
        OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
        BufferedWriter fw = new BufferedWriter(osw);
        fw.newLine();
        fw.write("通过转换流写入");
        fw.close();
    }
}


http://www.kler.cn/news/341339.html

相关文章:

  • go怎么处理线程之间的交互
  • Ubuntu20.04卸载ros2 foxy版本安装ros1 noetic版本
  • PigGo的安装配置
  • 网络安全-IPv4和IPv6的区别
  • 从0到1:企事业单位知识竞赛答题小程序迭代开发笔记一
  • Linux: debug: perf: report: --sort
  • 导出ES数据到excel
  • HashMap 和 Hashtable 有什么区别?
  • 基于Springboot vue应急物资供应管理系统设计与实现
  • Python 代码执行失败问题及解决方案
  • 基于遗传粒子群算法的无人机路径规划【遗传算法|基本粒子群|遗传粒子群三种方法对比】
  • 代码随想录day25:贪心part3
  • JavaScript 命令模式实战:打造可撤销的操作命令
  • C语言 | Leetcode C语言题解之第460题LFU缓存
  • Java日志(总结)
  • K8sGPT 实战:智能化 Kubernetes 集群诊断与问题解决
  • Windows 11 24H2版本有哪些新功能_Windows 11 24H2十四大新功能介绍
  • 【Fine-Tuning】大模型微调理论及方法, PytorchHuggingFace微调实战
  • 《webpack深入浅出系列》
  • 【论文阅读】DeepAC:实时六自由度目标跟踪的深度主动轮廓