字节流和字符流

顾名思义,字节流就是操作的是字节,字符流操作的就是字符。其中字节流又可以分为字节输入流(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. codeforces 493 D Vasya and Chess【 博弈 】

    题意:给出n*n的棋盘,白方在(1,1),黑方在(1,n)处,每一步可以上下左右对角线走,哪个先抓到另一个,则它获胜 可以画一下,发现n是奇数的时候,白方先走,无论它怎么走,黑方和它走对称的,黑方都一 ...

  2. 四个例子实战讲解.htaccess文件rewrite规则(转)

    一.防盗链功能 1 2 3 4 RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC] Rewrite ...

  3. Ncomputering 安装及参数设置

    1.加域 2.添加用户:系统属性---远程

  4. Unable to load annotation processor factory

    很多人在项目开发中都会遇到项目名称左上角有个红叉,有些是Jar问题,有些是代码问题,有些是编译问题,对于我这种强迫症的是受不了这种情况发生的,如果不影响项目启动还好,废话少说,今天工作就出现了一个问题 ...

  5. 影像服务——加载CESIUM自带的影像服务

    1.加载arcgis数据——ArcGisMapServerImageryProvider var viewer = new Cesium.Viewer("cesiumDiv",{ ...

  6. IOS中UIImagePickerController中文界面问题

    今天沈阳斌子,写IOS项目遇到一个调用照相机的问题,找到解决方法,高速攻克了拿给PM看,结果PM说程序调用的照相机不是中文的是英文的.必须改成中文.上网找到了方法.试用后好用拿出来和大家分享.方法例如 ...

  7. Ubuntu搜狗输入法的安装

    Ubuntu搜狗输入法的安装 这个直接安装就可以了:因为现在的Ubuntu是16.04版本,输入法已经是Fcitx版本: 下载搜狗输入法For Linux之后,直接双击就可以安装了: 安装之后,需要注 ...

  8. 数据结构之---C语言实现拓扑排序AOV图

    //有向图的拓扑排序 //杨鑫 #include <stdio.h> #include <stdlib.h> #include <string.h> #define ...

  9. Android Application 类共享全局数据

    android系统会为每一个程序执行时创建一个Application类的对象且仅创建一个.所以Application能够说是单例模式的一个类.且application对象的生命周期是整个程序中最长的, ...

  10. node07---post请求、表单提交、文件上传

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...