(一)流的定义

流是程序和设备之间嫁接起来用于数据传输的一根管道,该管道上有许多按钮用于实现不同的功能,而这根管道就是流。(流是可以实现输入输出的类,即流一定是类但类不一定是流)

(二)流的分类

1、按数据流的方向不同,可分为输出流、输入流;

2、按处理数据单位不同,可分为字节流、字符流;

3、按功能不同,可分为节点流(原始流)、处理流(包裹流);

(三)四大基本抽象流

注:1、顾名思义InputStream和OutputStream读写数据的单位是一个字节,Reader和Writer读写数据的单位是一个字符(Java中一个字符占两个字节);

2、InputStream、OutputStream、Reader、Writer这四个类都是抽象类;

3、输入是从设备中读取写入程序中,输出是从程序中读取写入设备中;

(四)常用方法

InputStream流常用方法

1、public int read(); throws IOException

读取一个字节并以整型的形式返回,如果读取到输入流末尾则返回-1;

import java.io.*;//导入流的包
public class TestRead_1 {public static void main(String[] args) throws Exception {int data;FileInputStream bis=new FileInputStream("D:\\JAVA\\lianxi\\src\\lianxi\\TestRead_1.java");
//FileInputStream是InputStream的子类为文本流,其中该地址是本人该程序中的路径,需要更改成自己电脑的程序路径data=bis.read();while(-1 != data) {System.out.printf("%c",data);data=bis.read();}bis.close();//使用流必须调用的方法,关闭此输入流并释放与该流相关的所有系统资源}
}

2、public int read(byte[] b) throws IOException

从输入流中读取一定数量的字节,并将其储存在缓冲区数组b中,以整数形式返回实际读取的字节数;

如果b中长度为0,便不读取任何字节,并返回0;

如果因为流位于文件末尾而没有可用字节,则返回-1;、

public class TestRead_2{public static void main(String[] args)throws Exception {FileInputStream fr=new FileInputStream("D:/JAVA/lianxi/src/lianxi/liu1.java");//FileInputStream是InputStream的子类为文本流,其中该地址是本人该程序中的路径,需要更改成自己电脑的程序路径int ch;byte[] b=new byte[1024];//创建一个byte类型数组ch=fr.read(b);//返回实际读取的字节数System.out.println(ch);while(ch!=-1) {ch=fr.read();//返回-1System.out.println(ch);    }fr.close();}
}
//输出:该程序实际字节数
//      -1

3、public int read(byte[] b,int off,int len); throws IOException

从下标off的位置开始读取最多len个字节数据储存于b数组缓冲区;

返回实际读取的字节数以整数形式返回,读取到输入流末尾则返回-1;

public class TestRead_3{public static void main(String[] args)throws Exception {FileInputStream fr=new FileInputStream("D:/JAVA/lianxi/src/lianxi/liu1.java");//FileInputStream是InputStream的子类为文本流,其中该地址是本人该程序中的路径,需要更改成自己电脑的程序路径int ch;byte[] b=new byte[1024];//创建一个byte类型数组ch=fr.read(b,0,1000);//返回实际读取的字节数System.out.println(ch);while(ch!=-1) {ch=fr.read();//返回-1System.out.println(ch); }fr.close();}
}
//输出:该程序实际字节数
//      -1

4、void close(); throws IOException

关闭此输入流并释放与此输入流相关的所有系统资源;

OutputStream流常用方法

1、void write(int b); throws IOException

向输出流中写入一个字节数据;

import java.io.*;
public class TestWrite_1{public static void main(String[] args)throws Exception {FileInputStream fr=new FileInputStream("D:/JAVA/lianxi/src/lianxi/liu1.java");//FileInputStream是InputStream的子类为文本流,其中该地址是本人该程序中的路径,需要更改成自己电脑的程序路径FileOutputStream fo=new FileOutputStream("C:\\Users\\86152\\Desktop\\suibian.doc");//路径是写入的设备的地址,其中这是本人桌面的建立的一个doc文档int i;i=fr.read();while(-1!=i) {fo.write(i);i=fr.read();}fo.flush();//将输出流的缓冲流数据全部写出到达目的地fo.close();fr.close();}    }

输出结果:

2、void write(byte[] b); throws IOException

将一个字节类型的数组中的数据写入输出流;

public class TestWrite_2 {public static void main(String[] args)throws Exception {FileInputStream fr=new FileInputStream("D:/JAVA/lianxi/src/lianxi/liu1.java");FileOutputStream fo=new FileOutputStream("C:\\Users\\86152\\Desktop\\suibian.doc");int i;byte[] b=new byte[1024];i=fr.read(b,0,1024);while(-1!=i) {fo.write(b);i=fr.read(b,0,1024);}fo.flush();fo.close();fr.close();} }

3、void write(byte[] b,int off,int len); throws IOException

将一个字节类型的数组从指定位置off(下标)开始写入len个字节到输入流;

public class TestWrite_3 {public static void main(String[] args)throws Exception {FileInputStream fr=new FileInputStream("D:/JAVA/lianxi/src/lianxi/liu1.java");FileOutputStream fo=new FileOutputStream("C:\\Users\\86152\\Desktop\\suibian.doc");int i;byte[] b=new byte[1024];i=fr.read(b,0,1024);while(-1!=i) {fo.write(b,0,1024);i=fr.read(b,0,1024);}fo.flush();fo.close();fr.close();}  }

4、void close(); throws IOException

关闭此输入流并释放与此输入流相关的所有系统资源;

5、void flush(); throws IOException

将输出流的缓冲流数据全部写出到达目的地

Reader流常用方法

1、pubic int read(); throws IOException

读到一个字符并以整数的形式返回(0~255),如果到输入流末尾则返回-1;

import java.io.*;
public class TestRead_4 {public static void main(String[] args) throws Exception {int data;File bis=new FileRead("D:\\JAVA\\lianxi\\src\\lianxi\\TestRead_4.java");data=bis.read();while(-1 != data) {System.out.printf("%c",data);data=bis.read();}bis.close();}
}

2、public int read(char[] buf); throws IOException

读取一系列字符并储存到buf数组,返回实际读取的字符数,如果读取前已经到输入流的末尾则返回-1;

public class TestRead_5{public static void main(String[] args)throws Exception {FileInputStream fr=new FileInputStream("D:/JAVA/lianxi/src/lianxi/TestRead_5.java");int ch;char[] buf=new char[1024];ch=fr.read(buf);System.out.println(ch);while(ch!=-1) {ch=fr.read();System.out.println(ch);   }fr.close();}
}

3、public int read(char[] buf,int off,int len); throws IOException

从off下标开始读取最多len个字符储存到buf字符数组中;

返回实际读取的字符数,如果读取前已经到输入流末尾,则返回-1;

public class TestRead_6{public static void main(String[] args)throws Exception {FileReader fr=new FileReader("D:/JAVA/lianxi/src/lianxi/liu1.java");int ch;char[] buf=new char[1024];ch=fr.read(buf,0,1000);System.out.println(ch);while(ch!=-1) {ch=fr.read();System.out.println(ch);    }fr.close();}
}

4、public void close(); throw IOException

关闭流释放内存;

Writer流常用方法

1、public void write(int i); throws IOException

向输入流写入一个字符数据;

import java.io.*;
public class TestWrite_4{public static void main(String[] args)throws Exception {FileReader fr=new FileReader("D:/JAVA/lianxi/src/lianxi/liu1.java");FileWriter fo=new FileWriter("C:\\Users\\86152\\Desktop\\suibian.doc");int i;i=fr.read();while(-1!=i) {fo.write(i);i=fr.read();}fo.flush();fo.close();fr.close();}    }

2、public int write(char[] buf); throws IOException

将一个字符类型的数组中的数据写入输出流;

public class TestWrite_5 {public static void main(String[] args)throws Exception {FileReader fr=new FileReader("D:/JAVA/lianxi/src/lianxi/liu1.java");FileWriter fo=new FileWriter("C:\\Users\\86152\\Desktop\\suibian.doc");int i;char[] buf=new char[1024];i=fr.read(buf,0,1024);while(-1!=i) {fo.write(buf);i=fr.read(buf,0,1024);}fo.flush();fo.close();fr.close();}   }

3、public int write(char[] buf,int off,int len); throws IOException

将一个字符串从下标off开始最多len个字符写入输出流中;

public class TestWrite_6 {public static void main(String[] args)throws Exception {FileReader fr=new FileReader("D:/JAVA/lianxi/src/lianxi/liu1.java");FileWriter fo=new FileWriter("C:\\Users\\86152\\Desktop\\suibian.doc");int i;char[] b=new char[1024];i=fr.read(b,0,1024);while(-1!=i) {fo.write(b,0,1024);i=fr.read(b,0,1024);}fo.flush();fo.close();fr.close();}    }

4、void close(); throws IOException

关闭此输入流并释放与此输入流相关的所有系统资源;

5、void flush(); throws IOException

将输出流的缓冲流数据全部写出到达目的地

JAVA--四大基本流相关推荐

  1. Java Stream(流)的分类, 四大基本流的介绍

    上一篇文章已经介绍过什么是流, 以及流的基本概念 http://blog.csdn.net/nvd11/article/details/29917065 本文主要介绍java四大基本流的方法. 一, ...

  2. java数据通道抽象为流_【java】IO流

    对于java的IO流的理解很长时间来都是很乱,包括学习其他的语言对这一块知识也都算是一个盲点.更多的时候一提到读取保存数据就是使用数据库.这一次学习了IO流,自己又解决了一个很大的盲点. IO流为我们 ...

  3. Java Stream简介, 流的基本概念.

    在Java or .net编程中,  我们经常见到"stream" 这个字眼. 我们大概知道这是个流的意思, 如果看完本文的话, 应该会有1个大概的概念. 一, Java中什么是S ...

  4. Java学习---Day16_IO流基础篇

    Java学习-Day16_IO流基础篇 文件操作 操作磁盘上的某一个文件或某一个文件夹,可以对他们进行创建或删除.移动.属性获取.属性设置等操作.但是,不包含读取文件的内容.拷贝文件 ps:java中 ...

  5. java 常见io流 万字详解

    文章目录 1.IO简介 1.1什么是IO流. 1.2数据源(Data Source) 1.3什么是流 1.4处理对象分类 1.5 java四大io抽象类及其他 1.6inputStream 1.61简 ...

  6. “万字“ Java I/O流讲解

    Java I/O流讲解 每博一文案 谁让你读了这么多书,又知道了双水村以外还有一个大世界,如果从小你就在这个天地里,日出而作,日落而息. 那你现在就会和众乡亲抱同一理想:经过几年的辛劳,像大哥一样娶个 ...

  7. JAVA基础 IO流技术学习笔记

    目录 一.IO 流技术介绍 1.1  什么是IO? 1.2  流的概念 1.3  数据源 1.3.1 什么是数据源? 1.3.2数据源的分类 二.第一个简单的IO流程序 三.IO流经典写法(适用于任何 ...

  8. java之IO流(2)

    30.3. 文件拷贝操作 需求:把copy_before.txt文件中的数据拷贝到copy_after.txt文件中 private static void copy() throws Excepti ...

  9. Java基础—IO流

    第一讲   IO概述 1. 流的概念 IO流即InputOutput的缩写,在Java中IO流用来处理设备之间的数据传输,Java对数据的操作是通过IO流的方式, 我们可以把IO流抽象的当作一根管道, ...

  10. java的输出流包括_【转】输入/输出流 - 深入理解Java中的流 (Stream)

    基于流的数据读写,太抽象了,什么叫基于流,什么是流?Hadoop是Java语言写的,所以想理解好Hadoop的Streaming Data Access,还得从Java流机制入手.流机制也是JAVA及 ...

最新文章

  1. c语言英语笔试题,C语言面试题(国外英语资料).doc
  2. Kali Linux安全渗透教程(内部资料)
  3. 如果给你500万,让你朝对象腿上开一枪,你愿意吗?
  4. 系统检测到您正在使用网页抓取工具_【安全】58反抓取简介
  5. python神器pandas_Python数据处理神器,pandas入门必需理解的核心内容
  6. 条件变量 ---C++17 多线程
  7. 将Win10包含中文的用户名改为英文的,解决Anaconda navigator无法运行jupyter的问题
  8. python画彩虹爱心_用python画一颗彩虹色爱心送给女朋友!!!
  9. 网易:层次遍历二叉树
  10. linux文件管理命令详解
  11. 使用 HMAC-SHA1 算法
  12. IOS+Android 车牌识别SDK开发包——可以各种角度瞬间OCR识别车牌牌号
  13. TRUNK 的介绍和配置
  14. mov文件如何转换成mp4?巧用嗨格式视频转换器
  15. sd卡重新分区以及格式化
  16. 不用找,你想要的手抄报 小报印刷模板素材都在这里
  17. 二极管质量好坏判断方法,轻松学会-通程创品
  18. 洞悉人性的职场沟通技术
  19. 【BZOJ3872】Ant colony(二分,动态规划)
  20. win11照片一打开就是打印怎么办?

热门文章

  1. 汇编语言 AND逻辑与指令
  2. 解决Win10局域网共享问题:请检查名称的拼写 否则 网络...
  3. MyEclipse中jer配置
  4. SAP中标准外协加工中成品收货时下级组件反冲利润中心确定控制逻辑
  5. MATLAB+GUI:手动修改曲线中的点
  6. python延时函数 微秒_Python程序可显示当前时,分,秒和微秒
  7. PMP 考试是一个骗局吗?
  8. 社保二季度亲自加仓三股遭套
  9. python 下载qq群文件_python获取所有qq好友、全部群所有成员部分信息,并保存列表至电子表格文件...
  10. 中国外文局文化传播中心借力vLive虚拟直播,打造国际汉文化云讲堂