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. js 快速将字符串数组 转化为 数字数组(互换)

    转载于   这里 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(String); //结果: ['1', '2', '3', '4', '5', '6' ...

  2. scrapy模拟登录

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

  3. 动态规划 hdu 1024

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  4. sqlmap常用命令

    sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了.今天把我一直 ...

  5. Quartz任务调度

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Quartz任务调度 课程目标 : 了解Quartz框架 : 任务(Job)  触发器(Trig ...

  6. Spring cloud 之Ribbon(一)基本使用

    简介 Spring cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它是基于Netflix的Riboon实现的.Ribbon是客户端负载均衡器,这有别语例如Nginx服务端负载 ...

  7. C++第二章作业

    1.(1)if...else 用法 #include <iostream> #include <cstring> using namespace std; int main() ...

  8. 解决No converter found for return value of type: class java.util.ArrayList

    十一月 02, 2018 7:37:44 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() f ...

  9. 解决webpack打包报错: Cannot find module '@webassemblyjs/wasm-parser'

    出现这个错误时,百度和谷歌中都搜索不出个所以然出来,后来看了一下webpack官网,说建议安装node最新版本: 前提条件 在开始之前,请确保安装了 Node.js 的最新版本.使用 Node.js ...

  10. 使用charles过滤网络请求

    1.对网络请求进行过滤,只监控向指定目录服务器上发送的请求 有以下方法: (1)在Structure视图或者Sequence视图的Filter 栏中填入需要过滤出来的关键字(适合临时性封包过滤) 或者 ...