• Java 的 IO 流


    1.Java 中有几种类型的流

    按照流的方向:输入流(inputStream)和输出流(outputStream)。

    按照处理数据的单位:字节流和字符流。字节流继承于 InputStream 和 OutputStream,字符流继承于 InputStreamReader 和 OutputStreamWriter。

     

     

    2.字节流

    2.1FileInputStream

    FileInputStream:字节文件输入流,从文件系统中的某个文件中获得输入字节,用于读取诸如图像数据之类的原始字节流。

       

      // 读取f盘下该文件f://hell/test.txt
    
            InputStream inputStream = new FileInputStream(new File("f://hello//test.txt"));
            int i = 0;
            //一次读取一个字节
            while ((i = inputStream.read()) != -1) {
                // System.out.print(i + " ");// 65 66 67 68
                //为什么会输出65 66 67 68?因为字符在底层存储的时候就是存储的数值。即字符对应的ASCII码。
                System.out.print((char) i + " ");// A B C D
            }
            //关闭IO流
            inputStream.close();

    2.2FileOutputStream

    FileOutputStream:字节文件输出流是用于将数据写入到File,从程序中写入到其他位置。

     OutputStream outputStream = new FileOutputStream(new File("test.txt"));
            // 写出数据
            outputStream.write("ABCD".getBytes());
            // 关闭IO流
            outputStream.close();
    
            // 内容追加写入
            OutputStream outputStream2 = new FileOutputStream("test.txt", true);
            // 输出换行符
            outputStream2.write("
    ".getBytes());
            // 输出追加内容
            outputStream2.write("hello".getBytes());
            // 关闭IO流
            outputStream2.close();

    2.3BufferedInputStream

    BufferedInputStream:字节缓冲输入流,提高了读取效率。

            InputStream in = new FileInputStream("test.txt");
            // 字节缓存流
            BufferedInputStream bis = new BufferedInputStream(in);
            byte[] bs = new byte[20];
            int len = 0;
            while ((len = bis.read(bs)) != -1) {
               System.out.print(new String(bs, 0, len));
                // ABCD
                // hello
            }
            // 关闭流
            bis.close();

    2.4BufferedOutputStream

    BufferedOutputStream:字节缓冲输出流,提高了写出效率。

       BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("test.txt", true));
            // 输出换行符
            bos.write("
    ".getBytes());
            // 输出内容
            bos.write("Hello Android".getBytes());
            // 刷新此缓冲的输出流
            bos.flush();
            // 关闭流
            bos.close();

    3.字符流

    3.1InputStreamReader

    InputStreamReader:字节流转字符流,它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。

          //指定编码 
            InputStreamReader reader = new InputStreamReader(new FileInputStream("test.txt"),"utf-8");
            int len;
            while ((len = reader.read()) != -1) {
                System.out.print((char) len);//????????Android
            }
            reader.close();

    3.2OutputStreamWriter

    OutputStreamWriter:字节流转字符流。

    3.3BufferedReader

    BufferedReader:字符缓冲流,从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

         //生成字符缓冲流对象
            BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("test.txt")));
            String str;
            //一次性读取一行
            while ((str = reader.readLine()) != null) {
                System.out.println(str);// 爱生活,爱Android
            }
    
            //关闭流
            reader.close();

    3.4BufferedWriter

    BufferedWriter:字符缓冲流,将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

     

  • 相关阅读:
    Android系统启动:1-综述
    在高通Fastmmi模式中增强交互方式
    Ubuntu 18.04安装xdrp以使用远程桌面
    如何在Android 确定 lunch对应的内核配置
    Android ADB命令集锦
    Android日志系统(logging system)
    汉诺塔游戏
    设置静态ip
    navicat的下载、激活
    上传本地文件到github(码云)上(小乌龟方式,sourcetree方式)
  • 原文地址:https://www.cnblogs.com/burufeihua/p/13037922.html
Copyright © 2020-2023  润新知