字节流和字符流

顾名思义,字节流就是操作的是字节,字符流操作的就是字符。其中字节流又可以分为字节输入流(InputStream)和字节输出流(OutputStream)。同样的字符流也可以分为字符输入流(Reader)和字符输出流(Writer)。字节输入流的用法和字符输入流的用法类似,字节输出流的用法和字符输出流的用法非常类似,最明显的区别是字节流是对字节的操作,字符流是对字符的操作。

①InputStream和Reader

通过查看API文档可以发现InputStream和Reader的核心方法分别是:

InputStream:

常见子类: ByteArrayInputStream, FileInputStreamFilterInputStream, InputStream, ObjectInputStream,StringBufferInputStream

 import java.io.*;

 public class InputStreamTest {
public static void main(String[] args) throws IOException {
InputStream is = new FileInputStream("f:/InputStream.txt"); byte[] b = new byte[32];
int len = 0;
while ((len = is.read(b)) != -1) {
is.read(b, 0, len);
System.out.println(b);
} }
}

InputStream方法举例

Reader:

常见子类:BufferedReader, LineNumberReader, CharArrayReader, InputStreamReader, FileReader, FilterReader, PushbackReader, PipedReader, StringReader, Writer

 import java.io.*;

 public class ReaderTest {
public static void main(String[] args) throws IOException {
Reader is = new FileReader("f:/InputStream.txt"); char[] b = new char[32];
int len = 0;
while ((len = is.read(b)) != -1) {
is.read(b, 0, len);
System.out.println(b);
} }
}

Reader方法举例

如果运行上述两个例子的话会发现输出结果不一样,InputStream举例中输出的不是文件里面的内容,这是因为InputStream读取的是一个个二进制码

2.OutputStream和Writer

OutputStream和Writer的核心方法是“写”,就是将数据写入到输出流里面去。分别看下他们的API上面的方法:

OutputStream:

常见子类:ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream

Writer:

常见子类:BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter

应为两者都是类似的,这里就举只一个Writer的例子

 import java.io.*;

 public class WriterTest {
public static void main(String[] args) throws IOException {
Writer wr = new FileWriter("f:/Writer.txt"); String s = new String("我是一个大公鸡");
wr.write("我\r\n");
wr.write(s, 0, s.length());
wr.flush();
wr.close(); }
}

Writer例子

记得写完之后一定要刷新缓冲,并且关闭流。

我不知道这些有没有说清楚,如果没有说清楚或者错误的地方希望大家不要给我脸,尽情地指出来,不胜感激

下一篇会详细写一下,那个各种流中的常见子类。

java流1----InputStream、OutputStream、Reader、Writer的更多相关文章

  1. Java I/O流-总结(InputStream,OutputStream,Reader,Writer)

    Java流总结 一. 流的分类 • 按数据流动方向 – 输入流:只能从中读取字节数据,而不能向其写出数据 – 输出流:只能向其写入字节数据,而不能从中读取数据 • 按照流所处理的数据类型 – 字节流: ...

  2. 系统学习 Java IO (十三)----字符读写 Reader/Writer 及其常用子类

    目录:系统学习 Java IO---- 目录,概览 Reader Reader 类是 Java IO API 中所有 Reader 子类的基类. Reader 类似于 InputStream ,除了它 ...

  3. Java字节流:InputStream OutputStream

    字节输入流:InputStream 类声明: public abstract class InputStream implements Closeable 位于java.io包下,是一个抽象类. 官方 ...

  4. Java笔记:Java 流(Stream)、文件(File)和IO

    更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...

  5. Java总结:Java 流(Stream)、文件(File)和IO

    更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...

  6. Java流(一)

    流: 概念:Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存中,形成了流,然后将这些流还可 以写到另外的目的地(文 ...

  7. 02_IO操作的基本规律(InputStream,OutputStream,Reader,Writer,FileReader,FileWriter,BufferedReader,BufferedWri

     模拟BufferedInputStream,编写一个类 package toto.IO; import java.io.IOException; import java.io.InputStre ...

  8. 系统学习 Java IO (十五)----字符读写 Reader/Writer 其他子类

    目录:系统学习 Java IO---- 目录,概览 跟踪行号的缓冲字符输入流 LineNumberReader LineNumberReader 类是一个 BufferedReader ,用于跟踪读取 ...

  9. 字节流和字符流(InputStream类和OutputStream类)

    java流包括字节流和字符流,字节流通过I/O设备以字节数据的方式读入,而字符流则是通过字节流读入数据转换成字符"流"的形式由用户驱使. InputStream是所有字节输入流的父 ...

随机推荐

  1. [原创]Linux 下 redis 链接一次

    刚接触 Linux ,在 Linux 下安装 redis 链接redis 出现了以下问题  Could not connect to Redis at 127.0.0.1:6379: Connecti ...

  2. 解除 linux 账户过期时间

    riyimei:~ # chage -E 2019/01/01 li Aging information changed. riyimei:~ # cat /etc/shadow |grep li l ...

  3. Python: 自定义类对象序列化为Json串

    之前已经实现了Python: Json串反序列化为自定义类对象,这次来实现了Json的序列化. 测试代码和结果如下: import Json.JsonTool class Score: math = ...

  4. P1017 进制转换 (负进制转换)

    和平常的转化差不多 加多一步 如果余数 < 0, 那么余数减去除数(此时除数是负),商数加1 #include<cstdio> #define _for(i, a, b) for(i ...

  5. 紫书 例题 11-6 UVa 658 (状态压缩+隐式图搜索+最短路)

    这道题用到了很多知识点, 是一道好题目.      第一用了状态压缩, 因为这里最多只有20位, 所以可以用二进制来储存状态 (要对数据范围敏感), 然后 涉及到了一些位运算.     第二这里是隐式 ...

  6. Docker搭建MySQL的PXC集群

    原文:Docker搭建MySQL的PXC集群 一.简介 PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galer ...

  7. JS在页面限制checkbox最大复选数

    应该是挺简单的代码, 记录一下分享. 首先最直接的想法就是使用循环, 用局部变量记录已选的checkbox, 达到最大值就将余下的checkbox都禁止选择, 例如以下: <!DOCTYPE h ...

  8. Android 主界面长按创建快捷方式

    Android中创建快捷方式主要有两种方式.一是在代码中直接加入生成桌面快捷方式的代码:二是通过小部件加入; 这篇文章主要讲另外一种方法! 1.通过在AndroidManifest文件里为Activi ...

  9. ,典型递归问题-F(1025)mod 5 的值

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  10. bzoj1800: [Ahoi2009]fly 飞行棋(乱搞)

    1800: [Ahoi2009]fly 飞行棋 题目:传送门 题解: 大水题,早上签个到 没什么好说的...搞个前缀和,算个周长... 周长为奇数肯定误解啊废话QWQ 那么看到n<=20,还不暴 ...