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. CSS中DIV只出现竖向滚动条且内容自动换行

    只需要设置如下的样式即可: <div id="testDiv" style="overflow-x: hidden; word-break:break-all;bo ...

  2. sqlserver根据条件生成插入语句--单表

    ALTER proc [dbo].[proc_insert] (@tablename varchar(256),@where varchar(max))asbeginset nocount ondec ...

  3. lua的local问题

    1. 初识 使用Local带来错误.自己写了一个递归的函数,结果报错: local fLocal = function(n) ) then return n; else ) end end )) 错误 ...

  4. 修改mysql允许主机访问的权限

    开启mysql的远程访问权限 默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限. 主流的有两种方法,改表法和授权法. 相对而言, ...

  5. QT网络编程UDP下C/S架构广播通信

    QT有封装好的UDP协议的类,QUdpSocket,里面有我们想要的函数接口.感兴趣的话,可以看看. 先搞服务端吧,写一个子类,继承QDialog类,起名为UdpServer类.头文件要引用我们上边说 ...

  6. linux系统开机突然黑屏,只有光标

    以前系统都是好好的,今天开机黑屏了,只有一个光标可以看见其他东西都看不见了. 经过检查发现是磁盘满了,将不用的文件删除之后可以正常开机了.特此记录一下!!! 有人问黑屏了怎么删文件? 我采用的方法是W ...

  7. CMake是用于生成make文件的跨平台编译文件

    参考: https://www.cnblogs.com/hbccdf/p/introduction_of_cmake.html https://elloop.github.io/tools/2016- ...

  8. macbook pro 2016 2017 15寸 雷电3 外接显卡 epu 简单教程(不修改UEFI)

    雷电3外接显卡效果还不错,但是除了akitio node 其他厂家并不会维护自己的固件来适配新机型,我自己买的mbp 2016 15''就出现了和AORUS Gaming Box 1070不兼容的问题 ...

  9. Windows下设置Ubuntu引导项

    最近在进行一些实验环境的配置,最终通过双系统实现了多系统的管理,而不仅限于虚拟机的方式.以此方式成功安装了Windows8.1 Pro和Windows 10,原文在此. 在此基础上进一步安装了 Ubu ...

  10. 理解Underscore中的_.bind函数

    最近一直忙于实习以及毕业设计的事情,所以上周阅读源码之后本周就一直没有进展.今天在写完开题报告之后又抽空看了一眼Underscore源码,发现上次没有看明白的一个函数忽然就豁然开朗了,于是赶紧写下了这 ...