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. scrapy模拟登录

    对于scrapy来说,也是有两个方法模拟登陆: 直接携带cookie 找到发送post请求的url地址,带上信息,发送请求 scrapy模拟登陆之携带cookie 应用场景: cookie过期时间很长 ...

  2. 问题:CGI返回给前端的汉字数据是乱码(已解决)

    今天,我在写CGI程序,把后台数据返回到前台页面上,出现乱码, 不好看,所以,我在Content-type:application后面加了字符集的设置(字符集和前端一样), fprintf(stdou ...

  3. 不让浏览器缓存index.html

    参考文档:https://www.2cto.com/ask/question/4598 location = /index.html { add_header Cache-Control " ...

  4. 为ivew的Page组件的跳页增加跳页确定按钮

    首次使用vue做后台管理项目,首次使用ivew框架,好不容易所有的功能都做完了,前几天产品经理让在每个列表的跳页后面加个‘确定’按钮,说没有确定按钮有点反人类,心想那还不分分钟的事儿嘛,立马回个‘好的 ...

  5. 用TCP IP从C#实时传数据到Matlab

    项目需要要从C#传实时数据到Matlab到数据分析,应该很多人也有这个需求,但是网上这方面的数据比较少,所以我把代码稍微贴下 首先是C#的部分 //介于我是同台电脑上传数据,直接用自己的IP建一个Se ...

  6. bytes,bytearray

    1.bytes.bytearray ---Python3 引入的! bytes:不可变字节序列,bytearray:字节属组,可变 都是连续的空间. 2.字符串与bytes 字符串是字符组成的有序的序 ...

  7. C# 数字字符串前面不足位补零方法

    ; Console.WriteLine(i.ToString("D3")); Console.WriteLine(i.ToString(")); Console.Writ ...

  8. Autofac之自动装配

    从容器中的可用服务中选择一个构造函数来创造对象,这个过程叫做自动装配.这个过程是通过反射实现的 默认 思考这么一个问题,如果注册类型中存在多个构造函数,那么Autofac会选择哪一个来创建类型的实例 ...

  9. 2PC/3PC/Paxos

    在分布式系统中,一个事务可能涉及到集群中的多个节点.单个节点很容易知道自己执行的事务成功还是失败,但因为网络不可靠难以了解其它节点的执行状态(可能事务执行成功但网络访问超时). 若部分节点事务执行失败 ...

  10. 插值代码17个---MATLAB

    函数名 功能Language 求已知数据点的拉格朗日插值多项式Atken 求已知数据点的艾特肯插值多项式Newton 求已知数据点的均差形式的牛顿插值多项式Newtonforward 求已知数据点的前 ...