精华内容
下载资源
问答
  • io流的分类有哪些
    2022-07-17 17:09:09

    io流主要分为 :输入流和输出流,字节流、字符流、缓冲流、转换流、对象流、打印流。
                             输入和输出:基准是内存
                             数据进入内存:就叫输入
                             输出写出内存:就叫输出

    1.字节和字符流

      字节输入流(InputStream):
     *             常用方法:
     *                 int read();//读取一个字节的数据,如果没有数据则返回-1
     *                 int read(byte[] b);//将读入的数据存入byte数组,返回读取的长度,如果没有数据则返                      回-1
     *                 void close();//关闭流,释放资源
     * 
     *             常用子类:FileInputStream
     *                     构造方法:
     *                     public FileInputStream(String pathname);
     *                     public FileInputStream(File pathname);

    字节输出流(OutputStream):
     *             常用方法:
     *                 void write(int i);//写出一个字节的数据
     *                 void write(byte[] b);//把byte数组中的数据写出去
     *                 void write(byte[] b,int offset,int len);//把byte数组中从offset位置开始,长度是len的数                        据写出去
     *                 void flush();//刷新,清空缓存区
     *                 void close();//关闭流,释放资源
     * 
     *             常用子类:FileOutputStream
     *                 构造方法:
     *                     //通过构造方法没有传入append,则append默认是覆盖(默认为false)
     *                     public FileOutputStream(String pathname);
     *                     public FileOutputStream(File pathname);
     *                     //append如果为true,则表示追加。如果为false表示覆盖
     *                     public FileOutputStream(String pathname,boolean append);
     *                     public FileOutputStream(File pathname,boolean append);

    字符输入流(Reader):
     *             常用方法:
     *                 int read();//读取一个字符的数据,如果没有数据则返回-1
     *                 int read(char[] ch);//读取数据存入char数组,返回读取的长度,如果没有数据则返回-1
     *                 void close();//关闭流,释放资源
     * 
     *             常用子类:FileReader
     *                 构造方法:
     *                     //调用下列构造方法的时候,底层会创建一个长度是8192的byte数组
     *                     //第一次读取的时候会读取8192字节的数据存入byte数组(如果数据量少于8192则有                           多少读多少)
     *                     //把数组对应位置的元素转换成字符进行操作处理。
     *                     //后面每一次读取的时候(调用read方法),只要byte数组中有数据就不用去磁盘中再                          读取数据
     *                     //直接操作内存中byte数组中的数据就可以了。
     *                     public FileReader(String pathname);    
     *                     public FileReader(File pathname); 

    字符输出流(Writer):
     *             常用方法:
     *                 void write(int i);//写出一个字符的数据
     *                 void write(char[] ch);//写出char数组中的全部数据
     *                 void write(char[] ch,int offset,int len);//写出char数组中,从offset开始到len长的数据
     *                 void write(String str);
     *                 void write(String str,int offset,int len);
     *                 void flush();
     *                 void close();
     * 
     *    常用子类:FileWriter
     *                 构造方法:
     *                     //调用下列构造方法的时候,底层会创建一个长度是8192的byte数组
     *                     //写出的字符转换成byte数据存入8192的byte数组中
     *                     //当该byte数组存不下数据的时候,或者 显示的调用flush方法时,
     *                     //会把该byte数组中的数据写出到目标位置
     *                     public FileWriter(String pathname);
     *                     public FileWriter(File pathname);
     *                     public FileWriter(String pathname,boolean append);
     *                     public FileWriter(File pathname,boolean append); 

     2.缓冲流:字节缓冲输入流和字节缓冲输出流作用:较少IO次数,提高IO的效率。

    字节输入流(InputStream):
     *         常用和转换流子类:
     *             FileInputStream
     *             BufferedInputStream:
     *                 构造方法:
     *                     //调用下面这个构造方法的时候,底层会创建一个长度是8129的byte数组
     *                     //当第一次读取的时候,会读取数据存入该byte数组中
     *                     //然后从该数组对应位置获取元素,进行操作
     *                     public BufferedInputStream(InputStream is);
     *                     //下面这个构造方法可以自己指定缓冲区大小
     *                     public BufferedInputStream(InputStream is,int size);

    字节输出流(OutputStream):
     *         常用子类:
     *             FileOutputStream
     *             BufferedOutputStream:
     *                 构造方法:
     *                     //调用下面这个构造方法的时候,底层会创建一个长度是8192的byte数组
     *                     //当写出数据的时候,会被数据存储在这个8192的byte数组中
     *                     //当该数组存不下数据,或者显示的调用了flush(close)方法,会把缓冲区中的数据                             写出去
     *                     public BufferedOutputStream(OutputStream os);
     *                     //通过下面的构造方法,可以指定缓冲区的大小
     *                     public BufferedOutputStream(OutputStream os,int size);

    字符输入流(Reader):
     *         常用子类:
     *             FileReader
     *             BufferedReader:
     *                 构造方法:
     *                     //调用下面这个构造方法的时候,底层会创建一个长度是8192的char数组
     *                     //调用读取方法,把数据读取存入8192的byte数组
     *                     //把8192byte数组中的数据统一转换成字符存入8192的char数组中
     *                     //从char数组中的对应位置获取元素,进行操作
     *                     public BufferedReader(Reader r);
     *                     public BufferedReader(Reader r,int size);
     * 
     *                 //字符输入流和缓冲字符输入流读取数据,读取的次数是一样的
     *                 //高效体现在字节到字符的转换。

    InputStreamReader(字符转换输入流):
     *                 构造方法:
     *                     //这个构造方法读取数据使用的是默认的字符编码
     *                     public InputStreamReader(InputStream is);
     *                     //这个构造方法读取数据使用的是自己指定的编码
     *                     public InputStreamReader(InputStream is,String charsetName);

    字符输出流(Writer):
     *         常用子类:
     *             FileWriter
     *                 调用FileWriter构造方法的时候,底层会创建一个长度是8192的byte数组
     * 
     *             BufferedWriter
     *                 构造方法:
     *                     //调用下面这个构造方法的时候,底层会创建一个长度是8192的char数组
     *                     //调用写出方法的时候,会把数据写出到8192的char数组中
     *                     //当8192的char数组存不下数据的时候,会同一进行转换(成byte),
     *                     //存储到8192的byte数组中,然后把8192byte数组中的数据写出去
     *                     public BufferedWriter(Writer w);
     *                     //调用下面这个构造方法可以自己指定缓冲区的大小
     *                     public BufferedWriter(Writer w,int size);
     * 
     *                 //字符缓冲输出流的高效体现在,字符到字节的转换上,写出次数这两种(FileWriter、                     BufferedWriter)是一样的

    OutputStreamWriter(字符转换输出流):
     *                 构造方法:
     *                     //使用默认的字符编码写出数据
     *                     public OutputStreamWriter(OutputStream os);
     *                     //使用自己指定的字符编码写出数据
     *                     public OutputStreamWriter(OutputStream os,String charsetName);

    3.对象流 

    ObjectInputStream(对象输入流):
          注意事项:
                  序列化后,类文件结构不能改变,如果改变了反序列化就会报错。
                  如果不能保证不修改类文件结构,则可以在该类中添加一个成员变量(常量):
                                                          serialVersionUID
                  反序列化回来后,会重新构建一个对象
          成员方法:
                final Object readObject();//读取一个对象
          构造方法:
                public ObjectInputStream(InputStream is);
    ObjectOutputStream(对象输出流):
            注意事项:
                    a.序列化的对象必须是Serializable类型
                    b.成员变量的类型也必须是Serializable类型
                    c.使用transient关键字修饰的成员变量不进行序列化
            成员方法:
                    void writeObject(Object obj);//将指定的对象写出。
            构造方法:
                    public ObjectOutputStream(OutputStream out);

    4.打印流

    PrintStream:打印流
     *         成员方法:
     *             void println();
     *             void print(参数);
     *         构造方法:
     *             public PrintStream(String pathname);
     *             public PrintStream(File pathname);

               

    更多相关内容
  • Java基础篇:IO流.pdf

    2020-05-19 11:03:47
    该文档主要整理了Java IO流的相关信息,主要包括IO流的按照不同维度的分类、节点流、处理流、输入输出流的处理过程、抽象基类的使用等细节内容
  • 什么是IO流?怎样区分不同种类IO流

    1.字节流和字符流
    2.输入流和输出流
    3.节点流和处理流
    Java中的I/O流主要定义在java.io包中,该包下定义了很多类,其中有4个类为流的顶级类,分别为InputStreamOutputStreamReaderWriter。其中InputStream和OutPutStream是字节流,而Reader和Writer是字符流;InputStream和Reader是输入流,而OutPutStream和Writer是输出流。I/O流顶级类的分类如图1所示。
    在这里插入图片描述图1 I/O流的顶层类

    展开全文
  • IO流分为字节流和字符流;顾名思义就能知道是因为其中数据格式区分的,字节流中数据格式为字节,字符流中数据格式为字符。 记住只要处理的是文本文档就要字符流;例如excel、word、txt等;其他的例如pdf、图片等...

    理解含义更好,不理解就记住背过。

    什么是字节流和字符流?

    IO流分为字节流和字符流;顾名思义就能知道是因为其中数据格式区分的,字节流中数据格式为字节,字符流中数据格式为字符。

    记住只要处理的是文本文档就用字符流;例如excel、word、txt等;其他的例如pdf、图片等各种包就用字节流。

    io流家族

    一看上图就就头皮发麻,太多了。感觉麻烦的可以看看【】【】理解下io流的概念,这里就是简单的列几个比较简单的说常用类的应用。

    java是面向对象的,也就是研究的时候看IO流功能中有哪些类,这些类都是干什么的?什么时候用就可以了?就算有一百个类肯定这些类都有不同的作用(看似废话),看他们都有什么属性?都有哪些方法?开始不要想着多个类的交互,单纯的研究某个或者某家族的类。例如我们常用的String,工作中我们要处理字符串就会时用String类的对象,String类能存放我们的字符串,能剪切、对比、替换我们的字符串。同理,我们也如此的去研究IO流,工作中遇到读取文件,就要想到用IO流的类,那个类呢?

    每个类的应用场景

    字节流和字符流如何选择?

    上面说了,只要处理的不是文本文件都用字节流,文本文件就要字符流。原因:字符流处理文档会更快,字节流处理文本文件是要先转字符后操作,多了一步。因为计算机数据都是字节的,所以字节流能处理任何文件。Reader、Writer字符类是父类,InputStream、OutputStream是字节流父类,他们是抽象类。

    什么时候选FileInputStream和FileOutputStream?

    只要处理磁盘上的文件都可以用,我想读磁盘上的东西就用FileInputStream,想输出数据到磁盘中就用FileOutputStream。对IO流还不熟的时候用这两这类没毛病,项目绝对能运行,企业级项目也不会涉及到多少人要什么高性能。但是这两个类比较基础,可以用装饰器的模式增加一些用途和有点,下面说。

    什么时候用FileReader和FileWriter

    只要处理磁盘上的文件,而且这个文件是文本,就选择用着两个(注意字符集)。原因:文本文件就用字符流,但是字符集分为GBK、UTF-8、ASCII等,所以根据utf-8格式的文件建立的流,输出到其他格式肯定是乱码的。这个就要用到InputStreamReader和OutputStreamWriter

    什么时候用InputStreamReader和OutputStreamWriter

    只要某个字节流处理的是文本文件,无论是想用利用下字符流提高高效,还是想转换字符集都可以用着两个类。1、提高效率的原因是自己操作文本文件需要先转字符,提前用字符流会快。2、字符集转换,例如我们输入的时候是gbk格式,输出想要utf格式,就可以用这两个类。

    什么时候用BufferedInputStream和BufferedOutputStream,BufferedReader和BufferedWriter

    想高效就用这四个类,大于几十兆的文件最好用这几个类。

    其他

    还有其他的类,以后再补充

    展开全文
  • I/O流有很多种,按照不同的分类方式,可以分为以下三类: 1.字节和字符 根据操作的数据单位的不同,可以分为字节和字符。字节以字节为单位进行数据的读写,每次读写一个或多个字节数据;字符以字符为...

    I/O(Input/Output)流,即输入/输出流,是Java中实现输入/输出的基础,它可以方便地实现数据的输入/输出操作。

    I/O流有很多种,按照不同的分类方式,可以分为以下三类

    1.字节流和字符流

    根据流操作的数据单位的不同,可以分为字节流和字符流。字节流以字节为单位进行数据的读写,每次读写一个或多个字节数据;字符流以字符为单位进行数据的读写,每次读写一个或者多个字符数据。

    2.输入流和输出流

    根据流传输方向的不同,又可分为输入流和输出流。其中输入流只能从流中读取数据,而不能向其写入数据;输出流只能向流中写入数据,而不能从中读取数据。

    3.节点流和处理流

    根据流的功能不同,可以分为节点流和处理流。其中节点流也被称为低级流,是指可以从一个特定的I/O设备(如磁盘)读写数据的流,它只能直接连接数据源,进行数据的读写操作;处理流也被称为高级流,它用于对一个已存在的节点流进行连接和封装,通过封装后的流来实现流的读写能力。当使用处理流时,程序不会直接连接到实际的数据源,而是连接在已存在的流之上。

    Java中的I/O流主要定义在java.io包中,该包下定义了很多类,其中有4个类为流的顶级类,分别为InputStream和OutputStream,Reader和Writer。其中InputStream和OutPutStream是字节流,而Reader和Writer是字符流;InputStream和Reader是输入流,而OutPutStream和Writer是输出流。I/O流顶级类的分类如图所示。
    在这里插入图片描述
    IO流的详细分类

    1)按流向分:

    输入流:读取数据,把持久设备的数据读取到内存中。

    输出流:写出数据,把内存的数据写出到持久设备。

    2)按数据类型分:

    计算机中一切数据都是:字节数据。

    字符数据:底层还是字节数据,但是可以根据某些规则,把字节变成人们认识的文字、符号等等。

    字节流:数据在持久设备上都是以二进制形式保存的。二进制就是字节数据。Java就给出了字节流可以直接操作字节数据。

    字节输入流:InputStream

    子类:FileInputStream

    字节输出流:OutputStream

    子类:FileOutputStream

    字符流:读取字符数据。数据在设备上是以二进制形式表示,但是有些二进制合并在一起可以表示一些字符数据。

    字符输入流:Reader

    子类:FileReader

    字符输出流:Writer

    子类:FileWriter

    注意:

    1)字节流可以对任意类型的文件按照字节进行读和写的操作;例如:图片、视频、文本文件、word文档、mp3等。

    2)字符流只能对文本类型的文件进行操作;例如:.java文件、.txt等文件。

    二:字节流

    1)字节输出流 OutputStream

    public void close() :关闭此输出流并释放与此流相关联的任何系统资源。

    public void write(byte[] byte):把这个byte字节数组中的所有数据写到关联的设备中(设备包括文件、网络或者其他任何地方)。

    public void write(byte[] b, int off, int len) :把b字节中的数据从下标off位置开始往出写,共计写len个。

    public abstract void write(int b) : 把这个b数据写到关联的设备中。

    注意:close方法,当完成流的操作时,必须调用此方法,释放系统资源。

    2)字节输入流 InputStream

    public void close() :关闭此输入流并释放与此流相关联的任何系统资源。

    public abstract int read(): 调用一次read,就可以从关联的文件中读取一个字节数据,并返回这个字节数据。方法可以从关联的文件中读取数据。所有read方法如果读取到文件的末尾,都会返回-1。遇到-1就代表文件中的数据已经被读取完毕。

    public int read(byte[] byte):调用一次,读取多个字节数据,把读到的字节数据保存在传递的byte字节数组中。返回字节数组中读取的字节个数。注意:这个返回值不是数组长度。

    注意:close方法,当完成流的操作时,必须调用此方法,释放系统资源。

    三:字符流

    1)字符输入流 Reader

    public void close() :关闭此流并释放与此流相关联的任何系统资源。

    public int read(): 调用一次读取一个字符,返回字符的编码值。即读取的内容存放到返回值中。如果读取到文件末尾返回-1;

    public int read(char[] chs):调用一次读取多个字符,把这些字符保存在chs中,返回给字符数组中存储的字符个数,如果读取到文件末尾返回-1;

    注意:虽然读取了一个字符,但是会自动提升为int类型。

    2)字符输出流 Writer

    public abstract void close() :关闭此输出流并释放与此流相关联的任何系统资源。

    public abstract void flush() :刷新此输出流并强制任何缓冲的输出字符被写出。

    public void write(int b) :写出一个字符。

    public void write(char[] chs):将字符从指定的字符数组写出此输出流。

    public abstract void write(char[] b, int off, int len) :从指定的字符数组写出 len字符,从偏移量 off开始输出到此输出流。

    public void write(String str) :写出一个字符串。

    说明:字符输入和字符输出流都是自带缓冲区的。缓冲区就是在类的底层封装了一个数组,如果我们使用字符输出流向目的地文件中写数据的时候,数据不会立刻写到目的地文件中,而是写到自带的数组中,数据还在内存中,所以我们必须调用FileWriter类中的刷新方法flush将数组中的数据刷新到目的地硬盘文件中。

    注意:

    1. 虽然参数为int类型四个字节,但是只会保留一个字符的信息写出。

    2. 未调用close方法,数据只是保存到了缓冲区,并未写出到文件中。

    IO流入门全套教程:

    Java教程之IO模式精讲

    展开全文
  • Java中的IO流

    2020-12-22 12:51:06
    IO流按照流向分类可分为输入和输出,按照文件操作处理单元分类可分为字节流和字符流。 FileInputStream 文件操作输入字节流 FileOutputStream 文件操作输出字节流 FileReader 文件操作输入字符流 FileWriter 文件...
  • IO流概述及其分类

    2022-06-08 09:53:55
    IO流用来处理设备之间的数据传输,Java对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中java.io1.按照数据流向,站在内存角度,输入流,读入数据输出流,写出数据2.按照数据类型字节流:可以读写任何...
  • 关于IO流分类

    2022-01-12 10:29:14
    IO流可分为: 1、节点流:FileInputStream、FileOutputStream、FileReader、FileWriter 2、缓冲流:BufferedInputStream、FileOutputStream、BufferedReader、BufferedWriter 3、转换流:InputStreamReader、...
  • 最常见的十六种IO流

    2021-11-12 13:15:07
    IO流分类: 1、按照流的方向来划分:(以内存作为参照物)往内存中去叫做:输入(Input),或者叫做:读(Read);从内存中和出来叫做:输出(Output),或者叫做:写(Write)。 2、按照读取数据的方式不同划分...
  • IO流体系分类

    2021-08-23 20:39:16
    IO流分类: 1、 根据处理的数据类型不同可以分为:字符流和字节流。 2、根据数据的流向不同可以分为:输入流和输出流。 只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。 ...
  • JAVA流-IO流分类

    2022-01-26 16:45:16
    节点:直接从/向一个特定的IO设备(如磁盘,网络)读/写数据的,称为节点。 处理:“连接”在已存在的(节点或处理)之上通过对数据的处理为程序提供更为强大的读写功能的。 四、输入/输出体系中...
  • Java-详解IO流原理及流的分类

    多人点赞 热门讨论 2022-03-04 20:26:36
    Java IO原理 一、概述 (1)I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。...(3) java.io包下提供了各种“”类和接口,用以获取不同种 这里是引用 类的数据,并通过
  • java中常见的IO流

    2022-07-27 13:36:26
    java的常用Io流
  • Java:IO流概述和分类

    千次阅读 2022-04-04 17:36:43
    IO流浅显理解
  • java.io 通过数据、序列化和文件系统提供系统输入和输出。 1.1 输入和输出 – 数据源和目标媒介 ​ 输入和输出经常混淆,疑惑。 输入:向内存输入 输出:从内存输出 为了消除这种疑惑,java输入输出从名字上...
  • IO流分类 根据处理数据类型的不同分为:字节流和字符流 根据数据流向的不同分为:输入流和输出流 字节流和字符流: 字符流的由来:因为数据编码的不同,而了对字符进行高效操作的流对象。本质上其实就是基于字节...
  • IO流的四大类16种流方式
  • Java IO流IO流基础

    2021-01-20 02:53:54
    什么是“流”3.Serializable接口4.IO流分类二、IO基础之File类1. File类介绍2. File类的构造方法3.File类常用方法三、IO流之字节流1.什么是字节流2.字节流的分类3.字节输入流(InputStream)3.1.InputStream类...
  • IO流IO流原理及流的分类) 前提知识 File类 Java IO原理 I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。 Java程序中,对于数据的输入/输出操作以...
  • 【Java基础-3】吃透Java IO:字节、字符、缓冲

    万次阅读 多人点赞 2020-09-23 20:12:33
    什么是Java-IO?字符和字节的区别与适用场景是什么?缓冲到底实现了什么?如何高效地读写文件? 本文用大量的示例图和实例,带你吃透Java IO
  • Java之IO流分类及其基本方法

    千次阅读 2021-11-16 22:01:29
    IO流分类可以分为以下几类: 1、文件字节流:FileInputStream、FileOutputStream 2、文件字符流:FileReader、FileWiter 3、转换流:InputStreamReader、OutputStreamWriter 4、缓冲流:BufferedReader、...
  • Java之IO流学习总结

    2014-10-19 11:22:20
    IO流分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而了对字符进行高效操作的流对象。本质其实就是基于字节流...
  • IO流

    千次阅读 2022-03-25 15:39:48
    第二章 IO流原理及流的分类 1.Java IO流原理 2.流的分类 3.常用的类(FileInputStream和FileOutputStream) 1.InputStream(抽象类) 2.FileInputStream 3.FileOutStream 4.文件拷贝 5.常用的类(FileReader...
  • Java中的IO流分类

    2022-03-04 12:24:03
    Java IO 共涉及 40 多个类,这些类看上去很杂乱,但实际上很规则,而且彼此之间存在非常紧密的联系, Java IO 的 40 多个类都是从如下 4 个抽象类基类中派生出来的。 InputStream/Reader: 所有的输入的基类...
  • IO流原理及流的分类

    2022-08-03 20:27:03
    IO流原理及流的分类

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 103,506
精华内容 41,402
关键字:

io流的分类有哪些