• 关于输入输出流


    输入输出流学习

    一、字节流

    输入字节流:

    |----------|InputStream 输入字节流的基类,抽象类

    |----------------|FileInputStream

    |----------------|BufferedInputStream 缓冲输入字节流

    输出字节流:

    |----------|OutPutStream 输出字节流基类

    |----------------|FileInputStream

    |----------------|BufferedOutPutStream

    什么时候使用字节流: 读取到的数据不需要编码或解码的情况,不如图片数据。

    Demo1 以 字节流 形式向文件输入、输出数据

    import java.io.*;

    public class InOutStream

    {

    public static void main(String []args)throws IOException{

      //向文件写入数据

      File file = new File("F://a.txt"); //创建文件对象

      String str = "我有一头小毛驴,但我也不骑!";

          FileOutputStream fos = new FileOutputStream(file); 

         //创建文件输出流对象

      fos.write(str.getBytes()); //从内存写入文件中(write(byte[])

      FileInputStream fis = new FileInputStream(file);

      //创建文件输入流对象

      byte []buffer = new byte[1024]; //定义缓冲区

      int len = -1;

      len = fis.read(buffer);

      // read(byte[]b) 从输入流读取一定数量字节,并将其存放到 

      //同时,以int形式返回读取的字节数

      String fileData = new String(buffer,0,len);//byte[]->string

      System.out.println("文件内容:"+fileData);

    }

    }

       使用FileInputStreamFileOutPutStream类向文件写入与读出数据时,都存在一点不足,即这两个类都只提供对字节或字节数组的读取方法。由于汉字在文件中占两个字节,如果使用字节流读取不好可能会出项乱码现象。 此时采用字符流 Reader 和 Writer 即可避免。

    二、字符流

    字符流 字节流 编码(解码)

    输入字符流:

    |---------------| Reader 所有输入字符流的基类,抽象类

    |------------------|FileReader 读取文件字符的输入字符流

    |------------------|BuferedReader 维护了8192个长度的字符数组

    输出字符流:

    |---------------| Writer所有输出字符流的基类。

    |------------------|FileWriter

    |------------------|BufferedWrite

    什么情况下使用字符流:读取都是字符流

     Demo 2 以 字符流 形式向文件写入、读取数据

    import java.io.*;

    public class FileWR

    {

    public static void main(String []args)throws Exception{

     File file = new File("F://b.txt");

         FileWriter fw = new FileWriter(file);

     String str = "梦里一吧杀猪刀!";

     fw.write(str);

     fw.close();

     FileReader fr = new FileReader(file);

     char []buffer = new char[1024];

     int len = -1;

     len = fr.read(buffer);

     String fileData = new String(buffer,0,len);

     System.out.println("文件内容: "+ fileData);

     fr.close();

    }

    }

    三、转化流

          输入字节流转换流 

                  InputStreamReader

          输出字节转换流

                  OutputStreamWriter

          转换流的作用:

              1、可以把对应的字节流转换成字符流使用

              2、指定编码类型

    Demo3 转换流的作用

    import java.io.*;

    public class ChangeStream

    {

    public static void  main(String []args)throws IOException{

    // Test_1();

     Test_2();

    }

    public static void Test_1()throws IOException{

          

     InputStream input = System.in;// 标准输入流

         int str = input.read();//一个字节一个字节的读

         //当输入: abc 时,只能输出 97a) 。

     System.out.println(""+str);

    }

    public static void Test_2()throws IOException{

      

     InputStream input = System.in;

         InputStreamReader isr = new InputStreamReader(input);//字符转化流,将标准输入 流转变为字符,此处可以指定字符集

        

     BufferedReader br = new BufferedReader(isr);//

     String str = br.readLine();// 行读取数据

         System.out.println(""+str);

    }

    }

  • 相关阅读:
    「HDU3640」I,Zombie
    气温变化折线图/matplotlib中文显示
    基本折线图
    根据统计数据画直方图
    matplotlib直方图绘制(hist)
    豆瓣Top250电影数据爬取学习
    pd.set_option参数设置
    django安装
    字典公共键
    字典排序
  • 原文地址:https://www.cnblogs.com/he-shao/p/5848160.html
Copyright © 2020-2023  润新知