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. RT throttling分析【转】

    转自:https://blog.csdn.net/u012728256/article/details/72639612 Linux上调度策略为SCHED_FIFO的实时进程是根据优先级抢占运行的.当 ...

  2. Linux下间隔多少秒 (即以秒为单位) 去执行某条命令或某个shell脚本的操作方法【转】

    在日常运维工作中, 经常会碰到以秒为单位去定时执行某些命令或监控脚本的需求. 说到定时任务就要用到crontab,通常来说,crontab的最小单位是分钟级别,要想实现秒级别的定时任务,就要进行特殊设 ...

  3. 【原创】大叔问题定位分享(27)spark中rdd.cache

    spark 2.1.1 spark应用中有一些task非常慢,持续10个小时,有一个task日志如下: 2019-01-24 21:38:56,024 [dispatcher-event-loop-2 ...

  4. Python 回溯算法

    回溯算法(试探法) 在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就"回溯"返回,尝试别的路径.回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到某一步时 ...

  5. NOIP基本算法

    NOIP基本算法 1.二分 poj 2018 Best Cow Fences ▪ http://poj.org/problem?id=2018 ▪ 题意:给定一个正整数数列

  6. git用代码库文件完全覆盖本地/git不能提交jar的设置

    用代码库中的文件完全覆盖本地工作版本. 方法如下: git reset --hard git pull 操作后 本地该目录下所有修改都会被删除!!! 谨慎操作! 项目目录下 文件:.gitignore ...

  7. linux服务器配置pyspider出现Could not run curl-config 的解决方式

    Downloading/unpacking pycurl (from pyspider) Downloading pycurl-7.19.5.1.tar.gz (142kB): 142kB downl ...

  8. Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Security

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  9. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第五集之补充-转载“深入理解VMware虚拟网络”】

    郑重声明,此文太好,按耐不住要保存起来好好研究研究,如果侵权,联系我. 转载自王春海的http://blog.51cto.com/wangchunhai/381225,有所更改. 同时可以参考:htt ...

  10. Servlet(六):Cookie

    Cookie 学习:问题: HTTP 协议是没有记忆功能的,一次请求结束后,相关数据会被销毁.如果第二次的请求需要使用相同的请求数据怎么办呢?难道是让用户再次请求书写吗?解决: 使用 Cookie 技 ...