输入流和输出流相对于内存设备而言.

将外设中的数据读取到内存中:输入
将内存的数写入到外设中:输出。

字符流的由来:
其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表。获取对应的文字。比如,字符是按照UTF-8编码的,那么每次读的时候,都会从
磁盘上先连续读取三个字节,然后把这个三个字节去utf-8编码中寻找对应的字符。列 。中文的“中”,假设其UTF-8的编码是 “0xf4,0x32,0x12”。那么如果
读取到这上个字节后,就会被转化成中文的“中”字。在对这个文字进行操作。简单说:字节流+编码表

---------------------------------------

字节流的两个顶层父类:
1,InputStream  2,OutputStream.

字符流的两个顶层父类:
1,Reader 2,Writer

这些体系的子类都以父类名作为后缀。
而且子类名的前缀就是该对象的功能。

就从熟悉的文字开始字符流,

//需求:将一些文字存储到硬盘一个文件中。
记住;如果要操作文字数据,建议优先考虑字符流。
而且要将数据从内存写到硬盘上,要使用字符流中的输出流。Writer
硬盘的数据基本体现是文件。 希望找到一个可以操作文件的Writer.
找到了FileWriter
FileWriter(String fileName)
          根据给定的文件名构造一个 FileWriter 对象。
FileWriter(String fileName, boolean append)
          根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
FileWriter(File file)
          根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(File file, boolean append)
          根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(FileDescriptor fd)
          构造与某个文件描述符相关联的 FileWriter 对象。
其中,append表示添加,也就是在原有的东西后面添加字符,如果没有这个append参数,那么新创建的
文件会覆盖之前的旧文件,并且新文件为空。
write
public void write(int c) throws IOException写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。
用于支持高效单字符输出的子类应重写此方法。
参数:c - 指定要写入字符的 int。
抛出: IOException - 如果发生 I/O 错误

public void write(char[] cbuf) throws IOException写入字符数组。
参数:cbuf - 要写入的字符数组
抛出: IOException - 如果发生 I/O 错误

public abstract void write(char[] cbuf,int off,int len) throws IOException写入字符数组的某一部分。
参数:cbuf - 字符数组
      off - 开始写入字符处的偏移量
      len - 要写入的字符数
抛出:IOException - 如果发生 I/O 错误

public void write(String str) throws IOException写入字符串。
参数:str - 要写入的字符串
抛出: IOException - 如果发生 I/O 错误

public void write(String str,int off,int len) throws IOException写入字符串的某一部分。
参数:str - 字符串
      off - 相对初始写入字符的偏移量
      len - 要写入的字符数
抛出: IndexOutOfBoundsException - 如果 off 或 len 为负,或者 off+len 为负或大于给定字符串的长度
IOException - 如果发生 I/O 错误

flush
public abstract void flush() throws IOException刷新该流的缓冲。如果该流已保存缓冲区中各种 write() 方法的所有字符,则立即将它们写入预期目标。然后,如果该目标是另一个字符或字节流,则将其刷新。因此,一次 flush() 调用将刷新 Writer 和 OutputStream 链中的所有缓冲区。
如果此流的预期目标是由底层操作系统提供的一个抽象(如一个文件),则刷新该流只能保证将以前写入到流的字节传递给操作系统进行写入,但不保证能将这些字节实际写入到物理设备(如磁盘驱动器)。
指定者:接口 Flushable 中的 flush
抛出: IOException - 如果发生 I/O 错误

close
public abstract void close() throws IOException关闭此流,但要先刷新它。在关闭该流之后,再调用 write() 或 flush() 将导致抛出 IOException。关闭以前关闭的流无效。
指定者:接口 Closeable 中的 close
抛出: IOException - 如果发生 I/O 错误

//需求:读取一个文本文件。将读取到的字符打印到控制台.
同上,找到了FileReader
FileReader(File file)
FileReader(String fileName)
FileReader(FileDescriptor fd)

read
public int read() throws IOException读取单个字符。
覆盖:类 Reader 中的 read
返回:读取的字符,如果已到达流的末尾,则返回 -1
抛出: IOException - 如果发生 I/O 错误

read public int read(char[] cbuf,int offset,int length) throws IOException将字符读入数组中的某一部分。
指定者:类 Reader 中的 read
参数:cbuf - 目标缓冲区
      offset - 从其处开始存储字符的偏移量
      length - 要读取的最大字符数
返回:读取的字符数,如果已到达流的末尾,则返回 -1
抛出: IOException - 如果发生 I/O 错误

java下的字符流的更多相关文章

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

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

  2. java 字节流和字符流的区别 转载

    转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不 ...

  3. java 字节流和字符流的区别

    转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不 ...

  4. Java进阶(四十五)java 字节流与字符流的区别

    java 字节流与字符流的区别(转载)   字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?   实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作 ...

  5. Java 字节流和字符流

    程序中都是以流的形式进行数据的传输和保存,在java.io包中数据流操作的两大类是字节流和字符流. 1. 字节流 InputStream和OutputStream是所有表示字节流的类的父类,它们都是抽 ...

  6. java字节流和字符流,以及java文件操作

    A.首先说字节流:1.字节流在操作的时候不会用到缓冲区(也就是内存)2.字节流可用于任何类型的对象,包括二进制对象3.字节流处理单元为1个字节,操作字节和字节数组.InputStream是所有字节输入 ...

  7. java 字节流与字符流的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...

  8. Java IO之字符流和文件

    前面的博文介绍了字节流,那字符流又是什么流?从字面意思上看,字节流是面向字节的流,字符流是针对unicode编码的字符流,字符的单位一般比字节大,字节可以处理任何数据类型,通常在处理文本文件内容时,字 ...

  9. [Java IO]03_字符流

    Java程序中,一个字符等于两个字节. Reader 和 Writer 两个就是专门用于操作字符流的类. Writer Writer是一个字符流的抽象类.  它的定义如下: public abstra ...

随机推荐

  1. browser shell

    我一直坚信,做项目需要通过文档来总结.一来可以梳理自己的项目和思路,二来可以备忘,三则可以为有同样需求的朋友提供一些参考.如果一直不进行总结,真的很可能是写了多年的代码,却只有一年的经验.当学习一项新 ...

  2. mac快捷键

    切换 1. 应用程序切换 command tab 2.应用程序中的窗口间切换 command ~ ===================== 通用 1. 隐藏窗口 command H 2. 最小化窗口 ...

  3. H5页面在QQ和微信上分享,为什么不能自定义设置图片和摘要?

    [记录]title标签中的页面标题为抓取标题.body内第一个img标签内的图片为自动抓取缩略图,图片宽高要大于300,如果不希望显示出来,将标签宽高皆设置为0.摘要显示为来源链接,如需自定义需要通过 ...

  4. GDI+ 操作TIFF ccitt t.6 压缩

    Bitmap Bi=new Bitmap("C:\img.tif"); SaveFileDialog sfdlg = new SaveFileDialog(); sfdlg.Fil ...

  5. 单例实现c++

    #include <iostream> using namespace std; class Singleton { public: static Singleton *GetInstan ...

  6. 3.1 哈尔空间 V0

    一张灰度图是由多个像素点而组成的,同样,这些像素点的是由一个从0(黑)到255(白)的非负数组成的.假设我们现在有一张小的灰度图像.在第一行的灰度值为110,100,120,140,130,100,1 ...

  7. tinyPng Photoshop Plugin 安装的坑

    一定要注意两点: 第一: 注册表注册路径要修改为自己安装ps cc时的注册表路径[HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Photoshop\70.0]第二: Applic ...

  8. js加解密

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. git 文件重命名

    文件重命名 git mv old_name new_name git commit -m 'rename' git push origin master 删除文件 git rm filename

  10. OAF_开发系列22_实现OAF条形码BarCode

    20150717 Created By BaoXinjian