Java中的流主要是用来读写文件的。只要明确你是读文件还是写文件就可以确定使用哪种流了。读:read   写:writer

1、读文件:filereader这个类,顾名思义就知道是读文件了。

2、写文件:filewriter这个类,那么就是写文件了。

对于inputstream和outputstream怎么使用。我们也要确定是读文件还是写文件,我们可以像别人教的那样”读进来,写出去“的记忆。

而我个人区分的话并轻易使用的话,不是这个样的。下面是个人在使用时想的问题。

  1、我这次做的操作是写文件还是读文件?(也有可能是读写都用到,但是不影响我的思考)

  2、我使用的是字符流还是使用字节流。字符流功能大,但是在读文本的时候使用就好,其他的都使用字节流。这样我就可以知道使用哪种流了

就上面两个步骤,我就确定了使用那些流了。

想要知道怎么读写。还要知道相应的流中的,read和writer方法传参情况。

简介Java流:

 字符流和字节流的主要区别:

1.字节流读取的时候,读到一个字节就返回一个字节;  字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。

2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。

(1)

  1)   FileReader 文件字符流:读

  2) FileWriter 文件字符流:写

  3)   FileInputStream  数据字节流::读

  4)   FileOutputStream  文件字节流:写

(2)缓冲流:可以一次读一行。缓存作用

  1)   bufferReader 缓冲字符流:读

  2)   bufferWriter  缓存字符流:写

  3)   bufferInputStream  缓存字节流:读

  4)   bufferOutputStream   缓存字节流:写

(3)转换流:完成字符流和字节流的转换

  1)InputStreamReader(InputStream);        //通过构造函数初始化,使用的是本系统默认的编码表GBK。

  2) InputStreamWriter(InputStream,String charSet);   //通过该构造函数初始化,可以指定编码表。

  3) OutputStreamWriter(OutputStream);      //通过该构造函数初始化,使用的是本系统默认的编码表GBK。

  4) OutputStreamwriter(OutputStream,String charSet);   //通过该构造函数初始化,可以指定编码表。

(4)数据流:读写基本数据类型

  1)DataInputStreamReader(InputStream);

  2) DataInputStreamWriter(OutputStream);

    eg:    

  1. int readInt();//一次读取四个字节,并将其转成int值
  2. writeInt(int);//一次写入四个字节,注意和write(int)不同,write(int)只将该整数的最低一个8位写入,剩余三个8为丢失
  3. hort readShort();
  4. writeShort(short);
  5. String readUTF();//按照utf-8修改版读取字符,注意,它只能读writeUTF()写入的字符数据。
  6. writeUTF(String);//按照utf-8修改版将字符数据进行存储,只能通过readUTF读取。

(5)  打印流(PrintStream/PrintWriter)

       PrintStream是一个字节打印流,System.out对应的类型就是PrintStream,它的构造函数可以接受三种数据类型的值:1.字符串路径。2.File对象 3.OutputStream
       PrintStream是一个字符打印流,它的构造函数可以接受四种类型的值:1.字符串路径。2.File对象 3.OutputStream  4.Writer  对于1、2类型的数据,可以指定编码表,也就是字符集,对于3、4类型的数据,可以指定自动刷新,当该自动刷新为True时,只有3个方法可以用:println,printf,format
(6)  对象流(ObjectInputStream/ObjectOutputStream)

        该类型的流可以把类作为一个整体进行存取,主要方法有:
        Object readObject();该方法抛出异常:ClassNotFountException。
        void writeObject(Object):被写入的对象必须实现一个接口:Serializable,否则就会抛出:NotSerializableException

对于输出输入下了解:

1、对于电脑。输出输入还可以是值输出设备和输入设备。如果是输入设备传数据到电脑,如键盘。就使用inputstream,如果是输出,如显示出来,就使用output

2、对于忘了,传出去就使用output,传进来就是用input

总之,确定是读文件还是写文件就行了。

buffer:即缓存的,可以一行或一块读取,所以速度比较快。

备注:参考https://blog.csdn.net/chendi1992/article/details/77802260。只做个人笔记参考,不做商业使用。如有雷同,请谅解。

Java的流的更多相关文章

  1. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  2. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  3. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  4. 揭开Java IO流中的flush()的神秘面纱

    大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...

  5. java io流 对文件夹的操作

    java io流 对文件夹的操作 检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文 ...

  6. Java IO流题库

    一.    填空题 Java IO流可以分为   节点流   和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行. 输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数 ...

  7. Java IO流总结

    Java IO流分类以及主要使用方式如下: IO流 |--字节流 |--字节输入流 InputStream: int read();//一次读取一个字节 int read(byte[] bys);// ...

  8. java io流 运行错误时,保存异常到文件里面

    java io流 运行错误时,保存异常到文件里面 下面这个实例,运行后,输入数字,为正确,如果输入字符串,则报错,保存错误信息 //运行错误时,保存异常到文件里面 //下面这个实例,运行后,输入数字, ...

  9. java io流 创建文件、写入数据、设置输出位置

    java io流 创建文件 写入数据 改变system.out.print的输出位置 //创建文件 //写入数据 //改变system.out.print的输出位置 import java.io.*; ...

  10. java io流 数据流传输

    java io流 数据流传输 把这段当公式用就可以了 //数据流传输 import java.io.*; public class Index{ public static void main(Str ...

随机推荐

  1. ArcGIS Construction Tool OnSketchFinished事件不响应

    使用ArcGIS AddIN ConstructionTool做东西,绘制完Sketch之后,OnSketchFinished事件不响应,没有任何异常与错误. 1.初步问题:OnSketchFinis ...

  2. connection reset by peer

    connection reset by peer https 请求返回下面的内容 {"msg":"connection reset by peer"," ...

  3. yii2 gridview checkbox

    给checkbox(在GridView里的)添加一个value 控制器:$dataProvidermStu->key = "student_no"; view:[ 'clas ...

  4. django的分页与添加图片

    分页: 在主页面的views里写接口 导包: from django.core.paginator import Paginator 接口: id=request.GET.get("page ...

  5. mysql-cluster集群配置

    环境: centos7:192.168.1.16,192.168.1.170 mysql-cluster-community-7.6.8-1.el7.x86_64.rpm-bundle.tar 安装: ...

  6. mysql 外键约束及表关联

    一.MYSQL中的约束 1.主键:primary key 唯一非空的特性并且可以优化查询速度 2.外键:foreign key 外键的作用保证2个或2个以上的数据表的数据一致性和完整性 3.唯一:un ...

  7. java 多线程争抢资源死锁

    多线程争抢资源死锁的原理就是,A线程正在持有锁1却想获取锁2,B线程正在持有锁2却要获取锁1 代码如下: public class Main { static ReentrantLock lock1 ...

  8. FreeSwitch 终端命令详细介绍

    FreeSwitch版本:1.6.9 以下为部分终端命令 alias 语法: alias [add|stickyadd] <alias> <command> | del [&l ...

  9. jquery-ui sortable 在拖动换位置时改变元素的大小导致占位与实际不一致

    使用jquery ui sortable时 需求是在拖动的时候要隐藏一部分元素,然后按照隐藏后的元素高度换位, 解决方案是修改源码jquery-ui.js, _mouseStart方法中开头增加 if ...

  10. react脚手架搭建

    1.npm install -g create-react-app 2.create-react-app react-demo 3.cd react-demo 4.npm start