1.字节流

  1.1 字节输出流OutputStream-抽象类,表示输出字节流的所有类的超类

  (1)void  close()  关闭此输出流并释放与此流相关的所有系统资源

  (2)void  flush()  刷新此输出流并强制写出所有缓冲的输出字节

  (3)void  write(byte[] b)  将b.length个字节从指定的byte数组写入此输出流

  (4)write  wirte(byte[] b,int off,int len)  将指定byte数组从偏移量off开始的len个字节写入此输出流

  (5)abstract void  write(int b)  将指定的字节写入此输出流

  1.2 FileOutputStream类

  (1)是OutputStream的子类,可以用来写入数据到文件,用于将数据写入File的输出流

  (2)构造方法

    FileOutputStream(File file)  创建一个向指定File对象表示的文件中写入数据的文件输出流

    FileOutputStream(String name)  创建一个向具有指定名称的文件中写入数据的输出文件流

  (3)续写和换行-构造函数中可以接受一个boolean类型的值,如果值为true,就会在文件末位继续添加

    FileOutputStream(File file,boolean append)  创建一个向指定File对象表示的文件中写入数据的文件输出流

    FileOutputStream(String name,boolean append)  创建一个向具有指定name的文件中写入数据的输出文件流

    通过在上一行末位或下一行开头加入\r\n实现换行

  (4)IO异常处理

    可以直接throws,或者用try...catch...finally

  1.3 字节输入流InputStream-抽象类,是表示字节输入流的所有类的超类

  (1)abstract int  read()  从输入流中读取数据的下一个字节,读取并返回,没有字节则返回-1

  (2)int  read(byte[] b)  从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中,返回读取到的字节数

  1.4 FileInputStream类-InputStream类的子类,可以用来读取文件内容,从文件系统中的某个文件中获得输入字节

  (1)构造方法

    FileInputStream(File file)  通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的File对象file指定

    FileInputStream(String name)  通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统的路径名name指定

  (2)读取数据方法

    abstract int read()  从输入流中读取数据的下一个字节

    int  read(byte[] b)  从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中

  1.5 字节流-文件复制

  (1)原理:读取一个已有的数据,并将这些读到的数据写入到另一个文件中

  (2)步骤:a.明确源和目的

         b.明确字节流、输入流和源相关联,输出流和目的关联

         c.使用输入流的读取方法读取字节,并将字节写入到目的文件中

         d.关闭资源

2.字符流

  2.1 字符编码表

  (1)ASCII:一个字节中的7位就可以表示,对应的字节都是正数 0-xxxxxxx

  (2)ISO-8859-1:拉丁码表latin,一个字节用的8位 1-xxxxxxx 负数

  (3)GB2312:简体中文码表,包含6000-7000中文和符号,用两个字节表示,其中的一部分是文字,第一个字节是负数,第二个字节可能是正数

    GBK:目前最常用的中文码表,2万的中文和符号。用两个字节表示。其中的一部分是文字,第一个字节开头是1,第二个字节开头是0

    GB18030:最新的中文码表,目前还未正式使用

  (4)UNICODE:国际标准码表,无论什么文字,都用两个字节存储

    Java中的char类型用的就是这个码表,char c='a',占两个字节

    Java中的字符串是按照系统默认码表来解析,简体中文版字符串默认的码表是GBK

  (5)UTF-8:基于unicode,一个字节就可以存储数据,不要用两个字节存储,而且这个码表更加的标准化,在每一个字节头加入了编码信息

  (6)能识别中文的码表:GBK、UTF-8;正因为识别中文码表不唯一,涉及到了编码解码问题。

    常见的编码 GBK  UTF-8  ISO-8859-1

    文字--->(数字) :编码。 “abc”.getBytes()  byte[]

    (数字)--->文字  : 解码。 byte[] b={97,98,99}  new String(b)

  2.2 字符输入流Reader-读取字符流的抽象类

  (1)int  read()  读取单个字符

  (2)int  read(char[] cbuf)  将字符读入数组

  2.3 FileReader类

  (1)FileInputStream用于读取诸如图像数据之类的原始字节流,要读取字符流,需要使用FileReader

  (2)构造方法

    FileReader(File file)  在给定从中读取数据的File的情况下创建一个新FileReader

    FileReader(String fileName)  在给定从中读取数据的文件名的情况下创建一个新FileReader

  2.4 字符输出流Writer-写入字符流的抽象类

  (1)void  write(char[] cbuf)  写入字符数组

  (2)abstract void  write(char[] cbuf,int off,int len)  写入字符数组的某一部分

  (3)void  write(int c)  写入单个字符

  (4)void  write(String str)  写入字符串

  (5)void   write(String str,int off,int len)  写入字符串的某一部分

  2.5 FileWriter类

  (1)FileWriter(File file) 根据给定的File对象构造一个FileWriter对象

  (2)FileWriter(File file,boolean append)  根据给定的File对象构造一个FileWriter对象

  (3)FileWriter(String fileName)  根据给定的文件名构造一个FileWriter对象

  (4)FileWriter(String fileName,boolean append)  根据给定的文件名以及指示是否附加写入数据的boolean值来构造FileWriter对象

  2.6 flush()和close()区别

  (1)flush():将流中的缓冲区缓冲的数据刷新到目的地中,刷新后,流还可以继续使用。

  (2)close():关闭资源,但在关闭前会将缓冲区中的数据先刷新到目的地,否则丢失数据,然后在关闭流。流不可以使用。如果写入数据多,一定要一边写一边刷新,最后一次可以不刷新,由close完成刷新并关闭。

    

  

[Day23]IO(字节流、字符流)的更多相关文章

  1. -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流

      File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...

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

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

  3. IO之字符流

    什么是字符流 对于文本文件(.txt .java .c .cpp) 使用字符流处理 注意点 读入的文件一定要存在 否则就会报FileNotFoundException 异常的处理 为了保证流资源 一定 ...

  4. Java IO: 其他字符流(下)

    作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本小节会简要概括Java IO中的PushbackReader,LineNumberReader,St ...

  5. IO 复习字节流字符流拷贝文件

    /* 本地文件 URL 文件拷贝 *//*文本文件拷贝 可以通过 字符流,也可以通过字节流*/ /*二进制文件拷贝 只可以通过字节流*//* 希望这个例子能帮助搞懂 字符流与字节流的区别 */ imp ...

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

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

  7. Java IO编程——字符流与字节流

    在java.io包里面File类是唯一 一个与文件本身有关的程序处理类,但是File只能够操作文件本身而不能够操作文件的内容,或者说在实际的开发之中IO操作的核心意义在于:输入与输出操作.而对于程序而 ...

  8. IO—》字节流&字符流

    字节流 一.字节输出流OutputStream OutputStream此抽象类,是表示输出字节流的所有类的超类.操作的数据都是字节,定义了输出字节流的基本共性功能方法. FileOutputStre ...

  9. 【C#IO 操作】stream 字节流|字符流 |比特流

    stream的简介 Stream 所有流的抽象基类. 流是字节序列的抽象,例如文件.输入/输出设备.进程中通信管道或 TCP/IP 套接字. Stream类及其派生类提供这些不同类型的输入和输出的一般 ...

  10. java IO之 字符流 (字符流 = 字节流 + 编码表) 装饰器模式

    字符流 计算机并不区分二进制文件与文本文件.所有的文件都是以二进制形式来存储的,因此, 从本质上说,所有的文件都是二进制文件.所以字符流是建立在字节流之上的,它能够提供字符 层次的编码和解码.列如,在 ...

随机推荐

  1. laravel 跨库执行原生 sql 语句

    执行原生 sql 返回结果集

  2. xheditor编辑器上传图片

    之前在用csdn的时候,觉得他们家的编辑器挺好用,精美,简洁,大方,功能强大.最近自己的项目也要用到编辑器,我就想起了xheditor. 好多大网站都用到它~好棒! 我把xheditor用于文章模块, ...

  3. .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'

    原因是缺少了启动文件,startup_xxx.s,只需要把该文件添加到项目下即可,该文件如果找不到则重新建立工程,每个新的工程建立后系统都会询问是否添加启动文件,选择添加启动文件即可. 注意选择对应容 ...

  4. VMware虚拟机安装Linux系统后IP配置(二)

    1.在NAT模式下自动获取IP 2.编辑网卡配置文件(通用) 3.Ctrl+L 清屏.重启网络服务后检查网络是否正常上网 修改后本机IP地址在linux中ping通本机IP 然而在本机却ping不通l ...

  5. VMware虚拟机从一台电脑复制到另一台电脑

    1.选中.vmx文件和所有的.vmdk文件,添加到压缩文件 vmx是虚拟系统配置文件,而vmdk则是虚拟磁盘文件,它们都是VMware所支持的文件格式 2.复制压缩文件到另一台电脑上,并解压 3.在另 ...

  6. 倒影问题(reflect:below)

    这个例子灵感来源于实现一个登录框下方的倒影: .box { width: 300px; height: 200px; border: 1px solid #1f637b; -webkit-box-re ...

  7. Vue中父子组件通讯——组件todolist

    一.todolist功能开发 <div id="root"> <div> <input type="text" v-model=& ...

  8. 扩展crt

    题解: 很久之前写过一篇..但好像写的不太正常 就重新写一篇 对于质数有一种朴素的crt合并 但其实那个没啥用..那个能做的扩展crt都能做 并且那个好像不能动态加方程组 所以就会扩展crt就行了 扩 ...

  9. SQL反模式学习笔记7 多态关联

    目标:引用多个父表 反模式:使用多用途外键.这种设计也叫做多态关联,或者杂乱关联. 多态关联和EAV有着相似的特征:元数据对象的名字是存储在字符串中的. 在多态关联中,父表的名字是存储在Issue_T ...

  10. skywalking6.0.0安装配置(windows),以mysql作为储存。

    下载skywalking6.0.0http://skywalking.apache.org/downloads/ 下载jdk8https://www.oracle.com/technetwork/ja ...