一.分类

  • 字节流(不适用于文本)
  1. InputStream
  2. OutputStream
  • 字符流
  1. Reader
  2. Writer

 二.字节流

  1.概述

      InputStream

      字节输入流,是被读的,抽象类,不能创建对象

        FileInputStream:针对文件数据操作

        DataInputSream:转换流,可传基本数据类型

        BufferedInputStream:缓冲流,常用

        ObjectInputStream:对象流

   OutputStream

      字节输出流,是被写的,抽象类,不能创建对象

        PrintStream:单向的输出流

  2.字节流----文件流

   文件流FileInputStream,字节流不适合文本(原因是10个字节为单位读),但适合图片

//1.创建对象
FileInputStream fis = new FileInputStream("src/test.txt"); //2.读文件,一个字节一个字节读
int n=fis.read();
System.out.println((byte)n);
n = fis.read();
System.out.println((byte)n);
n = fis.read();
System.out.println((byte)n); //3.读文件,一次读取多个字节
byte []by=new byte[1024];
int m=fis.read(by);//将读取的字节内容保存在buf数组 返回的是读取的字节数
System.out.println(m); //4.是流,所以再次读取时读不到数据,返回-1
m=fis.read(by);
System.out.println(m); //5.完整读取一个文本
byte []buf=new byte[10];//10个字节为单位读取。
int len=-1;
while((len=fis.read(buf))!=-1){
String result =new String(buf,0,len);
System.out.print(result);
}
fis.close();

      文件流的小练习:把图片复制到桌面

//1.找到源和目标位置
FileInputStream fis=new FileInputStream("图片原目录");
FileOutputStream fos=new FileOutputStream("桌面目录"); //2.读取文件媒介
byte []buf=new byte[1024];
int len=-1; //3.读取并写入文件
while((len=fis.read(buf)) != -1) {
fos.write(buf, 0, len);
} //4.写入后重要的步骤
fos.flush();
fos.close();
fis.close();

   文件流的小练习2:写入东西到txt文件

//文件字节输出流,创建对象并写入txt文档
//1.创建对象,追加或者覆盖
FileOutputStream fos=new FileOutStream("src/test.txt",true);
FileOutputStream fos=new FileOutStream("src/test.txt"); //2.写入
fos.write(97);//写入a
fos.write("你好".getByte());//将字符串转化为字节数组 //3.收尾
fos.flush();
fos.close();

  3.字节流-----缓冲流

    具有缓冲区,减少对硬盘的读写次数,在这里首先接触到装饰者模式,以后还会遇到更多

  • 写入缓冲字节流
//1.创建缓冲输出流  装饰者模式 设计模式
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src/buffer.txt")); bos.write("你好,我这里使用了缓冲流进行写入内容!!".getBytes());
bos.flush();
bos.close();
  • 读取缓冲字节流
//2.创建缓冲输入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("src/buffer.txt"));
byte[] buf = new byte[1024];
int len = -1;
while((len=bis.read(buf)) != -1 ) {
System.out.print(new String(buf, 0, len));
}
bis.close();

1(2)IO流---字节流的更多相关文章

  1. JAVA之IO流(字节流)

    输入和输出 JAVA的流分为输入流和输出流两部分, 输入流:InputStream或者Reader:从文件中读到程序中: 输出流:OutputStream或者Writer:从程序中输出到文件中: Re ...

  2. IO流(字节流,字符流,缓冲流)

    一:IO流的分类(组织架构) 根据处理数据类型的不同分为:字节流和字符流 根据数据流向不同分为:输入流和输出流   这么庞大的体系里面,常用的就那么几个,我们把它们抽取出来,如下图:   二:字符字节 ...

  3. Java之IO流(字节流,字符流)

    IO流和Properties IO流 IO流是指计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键, 因而所有 I/O 的主体实际上是内置在操作系统中的.单独的 ...

  4. Java IO流-字节流

    2017-11-05 17:48:17 Java中的IO流按数据类型分类分为两种,一是字节流,二是字符流.字符流的出现是为了简化文本数据的读入和写出操作. 如果操作的文件是文本文件,那么使用字符流会大 ...

  5. Java—IO流 字节流

    IO流(输入流.输出流),又分为字节流.字符流. 流是磁盘或其它外围设备中存储的数据的源点或终点. 输入流:程序从输入流读取数据源.数据源包括外界(键盘.文件.网络…),即是将数据源读入到程序的通信通 ...

  6. IO流——字节流、字符流

    在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 流的分类 ①   流按其流向分为“输入流”和“输出 ...

  7. JAVA基础——IO流字节流

    在Java中把不同的输入输出源(键盘.文件.网路连接)抽象表述为“流”. 1.输入流.输出流 .字节输入流通过FileInputStream和来操作 字节输出流通过FileOutputStream来操 ...

  8. IO流——字节流

    文件输出流 FileOutputStream:文件输出流是用于将数据写入 File,每次运行,都会覆盖之前文件中的数据 FileOutputStream(File file):创建一个向指定 File ...

  9. java IO流——字节流

    字节流主要操作byte类型数据,以byte数组为准,主要操作类有InputStream(字节输入流).OutputSteam(字节输出流)由于IputStream和OutputStream都是抽象类, ...

随机推荐

  1. ElasticsearchCRUD翻译系列之(一): ElasticsearchCRUD 介绍

    ELASTICSEARCH CRUD .NET PROVIDER 翻译自(原文地址: https://damienbod.com/2014/09/22/elasticsearch-crud-net-p ...

  2. 为虚机Linux系统设置静态IP,ping通外网并解决相关问题

    在虚机中安装完Linux系统后,虚机是ping不通外网的,而默认的动态IP会为之后的Hadoop应用造成不少麻烦,为了减少这些不必要的麻烦,我们把系统的IP设置为静态. 步骤: 修改系统配置文件 命令 ...

  3. 【转载】安装 gephi 软件

    作者:小小爽链接:https://www.zhihu.com/question/21268129/answer/354924066来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  4. 使用walle部署laravel的时候问题记录

    1.使用walle部署laravel的时候检出后执行composer update提示 [RuntimeException]The HOME or COMPOSER_HOME environment ...

  5. git常用命令学习笔记

    安装好git之后即可使用git来管理项目了,鼠标右键点击 git bash出现命令黑窗口,接下来执行git指令即可. https://git-scm.com/book/zh/v2 以下整理了git常用 ...

  6. 小白的首个maven web项目Step1软件安装三(8.0.15mysql及workbench安装)

    直接先开始下 MySQL 和 Workbench(mysql的可视化工具) ,注意下得是镜像版 .msi 后缀的 (mysql是纯控制面板的呈现方式,想要界面化操作可以装可视化工具,这里我装的是wor ...

  7. HDU2138(Miller-Rabin素数检测)

    最近在看RSA,找到一个一个大素数是好多加密算法的关键一步,而大素数无法直接构造,一般情况下都是生成一个随机数然后判断是不是素数.判断是否是素数的方法有好多,有的能够准确判断,比如可以直接因式分解(R ...

  8. R语言求根

    求根是数值计算的一个基本问题,一般采用的都是迭代算法求解,主要有不动点迭代法.牛顿-拉富生算法.割线法和二分法. 不动点迭代法 所谓的不动点是指x=f(x)的那些点,而所谓的不懂点迭代法是指将原方程化 ...

  9. ASP中替换掉换行符<br>

    function HtmlStrReplace(Str)  if Str="" or isnull(Str) then    HtmlStrReplace="" ...

  10. C++ MySQL编程

    MySQL编程需要包含<mysql.h>头文件.该文件一般在MySQL安装目录下的include文件夹下. 包含头文件还不够,还需要包含“libmysql.lib”库,一般在lib文件夹下 ...