IO流分类

按照数据流向

输入流:从外界(键盘、网络、文件…)读取数据到内存
输出流:用于将程序中的数据写出到外界(显示器、文件…)
数据源 目的地 交通工具

按照数据类型

字节流:主要用来处理字节或二进制对象。

字节输入流(InputStream)
字节输出流 (OutputStream)

字符流:主要用来处理字符、字符数组或字符串。

字符输入流(Reader)
字符输出流(Writer)

字节流和字符流的区别:

读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

选取:只要是处理纯文本数据,就优先考虑使用字符流,除此之外都使用字节流。

OutputStream(抽象类)
FileOutputStream
构造方法
  FileOutputStream(String name) 创建一个向name文件中写数据的输出文件流
  FileOutputStream(File file) 创建一个向file文件中写数据的输出文件流
  FileOutputStream(File file, boolean append) 创建一个向file文件中追加数据的输出文件流
成员方法
  public void write(int b) 写一个字节
  public void write(byte[] b) 写一个字节数组
  public void write(byte[] b,int off,int len) 写一个字节数组的一部分
  void close() 关闭此文件输出流并释放与此流有关的所有系统资源

InputStream
FileInputStream

FileInputStream的构造方法
  FileInputStream(File file) 创建一个从file读取数据的输入流
  FileInputStream(String name) 创建一个从name文件读取数据的输入流

FileInputStream的成员方法

  int read() 一次读取一个字节
  1.读取一个字节并且返回给调用者,返回的是读取的内容
  2.将指针移动到下一个位置
  3.读取到文件末尾返回-1
  int b = 0;
  while((b = is.read()) != -1) {
    System.out.print((char)b);
  }
  int read(byte[] b) 一次读取一个字节数组
  1.读取一个字节数组到定义好的数组中,返回的是实际读取的长度
  2.将指针移动到下一个位置
  3.读取到文件末尾返回-1
  int len = 0;
  byte[] bys = new byte[5];
  while((len = is.read(bys)) != -1) {
    System.out.print(new String(bys, 0, len));
  }
  int read(byte[] b, int off, int len) 一次读取一个字节数组的一部分
  void close() 关闭此文件输入流并释放与此流有关的所有系统资源

注意:
关于输入流的一些注意事项
1.输出流文件不一定要存在,会自动创建 ,输入流文件一定要存在,否则会抛出异常 抛出FileNotFindException
2.计算机如何识别中文? 中文在GBK编码表中使用两个字节表示,两个字节的第一个字节是负数,
计算机它首先读取一个字节,发现该字节是负数,它会自动等待下一个字节来组合

IO流之字节流的更多相关文章

  1. java io流(字节流)复制文件

    java io流(字节流) 复制文件 //复制文件 //使用字节流 //复制文本文件用字符流,复制其它格式文件用字节流 import java.io.*; public class Index{ pu ...

  2. IO流(字节流复制)01

    package ioDemo; import java.io.*; /** * IO流(字节流复制) * Created by lcj on 2017/11/2. */ public class bu ...

  3. JavaSE学习笔记(14)---File类和IO流(字节流和字符流)

    JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...

  4. 【JAVA IO流之字节流】

    字节流部分和字符流部分的体系架构很相似,有四个基本流:InputStream.OutputStream.BufferedInputStream.BufferedOutputStream,其中,Inpu ...

  5. Java笔记(二十六)……IO流上 字节流与字符流

    概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...

  6. 【Java IO流】字节流和字符流详解

    字节流和字符流 对于文件必然有读和写的操作,读和写就对应了输入和输出流,流又分成字节和字符流. 1.从对文件的操作来讲,有读和写的操作——也就是输入和输出. 2.从流的流向来讲,有输入和输出之分. 3 ...

  7. JavaSE(十二)之IO流的字节流(一)

    前面我们学习的了多线程,今天开始要学习IO流了,java中IO流的知识非常重要.但是其实并不难,因为他们都有固定的套路. 一.流的概念     流是个抽象的概念,是对输入输出设备的抽象,Java程序中 ...

  8. IO流之字节流知识总结

    IO流分为字符流和字节流. 字节流;可以读取任何文件,电脑以字节的方式储存 字符流:用来读取字符. 下面是我总结的思维导图. 相关练习代码 public class Demo { @Test publ ...

  9. Java基础:IO流之字节流和字符流

    1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...

  10. java的IO流,字节流和字符流

    java操作文件都是通过流来处理的,(其实其他很多语言也是这样) 第一:java的IO流,分为:输入流 和 输出流(这真是废话,这是从流向的角度来说的) 第二:java的所有IO流,只分为:字节流 和 ...

随机推荐

  1. PowerBI主题制作

    简单主题: { "name": "St Patricks Day", "dataColors": ["#568410", ...

  2. 【Leetcode】【Medium】Best Time to Buy and Sell Stock II

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  3. 阿里云OSS 上传文件SDK

    Aliyun OSS SDK for C# 上传文件 另外:查找的其他实现C#上传文件功能例子: 1.WPF用流的方式上传/显示/下载图片文件(保存在数据库) (文末有案例下载链接) 2.WPF中利用 ...

  4. 使用 Sinamics S120 驱动脚本配置扩展报文

    为了传输故障代码.电流.温度等信息.通常需要使用扩展报文的方式来发送这些信息.在驱动数量较少的情况下,可以进行手动配置. 如果驱动数量很多,可以使用脚本script的方式来配置扩展报文. 驱动编号 注 ...

  5. Topic model的变种及其应用[1]

    转: http://www.blogbus.com/krischow-logs/65749376.html   LDA 着实 带领着 Topic model 火了一把. 但是其实我们华人世界内,也不乏 ...

  6. 在windows平台上构建自己的PHP(php5.3+)

    这是一篇翻译的文章,原文参见:https://wiki.php.net/internals/windows/stepbystepbuild 顺便提一句,wiki.php.net有很多精彩的内容,想深入 ...

  7. PyCharm的Debug工具栏中的Watches

    In the Watches pane you can evaluate any number of variables or expressions in the context of the cu ...

  8. Gluon sgd

    from mxnet import nd,autograd,init,gluon from mxnet.gluon import data as gdata,loss as gloss,nn num_ ...

  9. MyBatis(7)高级查询

    本次全部学习内容:MyBatisLearning 高级查询:   对于整体的工程是时候增加一点文件了: 具体用到那个类再去说明类的内容   一对一查询: 1.resultType进行实现: 执行的sq ...

  10. 四. 引入unittest单元测试框架

    1.   安装 SeleniumIDE(firefox) (1)下载地址:https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/ (2 ...