在Java IO提供的类中,除了前面介绍的RandomAccessFile类之外,还有一系列的io操作类。

  主要分为两大类。字符流和字节流。关系图如下:

  

  在Java IO的操作中,很好的体现了Java的面向对象的思想。一个接口或类的具体行为由子类来决定。

  字节流字节是直接操作文件,而字符流是通过缓冲区来操作文件的,所以在字符流操作结束需要刷新--flush()一下,close()方法会默认刷新。

字节输出流:OutputStream

在Java.io包中,OutputStream是字节输出流的最大父类。定义如下:

  public abstract class OutputStream extends Object implements Closeable,Flusable

这个类中提供了几个基本的操作方法和写入方法:close(),flush(),write(byte[] b),write(byte[] b,int off,int len),write(int b)

  如果此时需要完成对不同对象的输出操作,则需要借助与不同的子类来为父类实例化。如果是对文件的写入,则用FileOutputStream,想内存中写入则用ByteArrayOutputStream。

文件字节输出流:FileOutputStream

  以字节流的方式向文件中写入内容。

实例:

package com.fuwh.stream;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream; public class FileOutputStreamTest01 {
public static void main(String[] args) throws IOException {
//实例化一个文件输出流
OutputStream os=new FileOutputStream(new File("OutputStream01.txt"),true);
String hello="hello";
String world="world!!!";
String name="赵云";
os.write(hello.getBytes());
byte[] worldByte=world.getBytes();
for(byte b:worldByte){
os.write(b);
}
os.write(name.getBytes());
os.close();
}
}

字节输入流:InputStream

类的定义如下:

  public abstract class InputStream extends Object implements Closeable

这是一个抽象类,是字节输入流的最大父类。提供了一些基本的操作方法,比如:close(),read(),read(byte[] b),read(byte[] b,int off,int len)

如果此时需要实现对文件的操作则需要使用到InputStream的子类FileInputStream。

文件字节输入流:FileInputStream

  在这个类中提供了一些基本的操作和读入操作,read(),read(byte[] b),read(byte[] b,int off,int len),skip(long n)

实例:

package com.fuwh.stream;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream; public class FileInputStreamTest01 { public static void main(String[] args) throws IOException {
//读取上一个FileOutputStream写入的文件中的内容
File file=new File("OutputStream01.txt");
InputStream is=new FileInputStream(file);
byte[] b=new byte[(int) file.length()];
is.read(b);
System.out.println(new String(b));
is.close();
}
}

字符流输出流: Writer

Writer类字符输出流的最大父类,定义如下:

  public abstract class Writer extends Object implements Appendable,Closeable,Flushable

这也是一个抽象类,在类中定义了一些最基本的write(char[],int off,int len),write(int c),write(String str),write(String str,int off,int len),close(),flush()等等方法,如果要实现向不同的目标输出,还需要借助于不同的子类。

文件字符输出流:FileWriter

此类的定义如下:

  public class FileWriter extends OutputStreamWriter

  可以发现这个类并没有直接继承Writer类,而是继承了一个继承自Writer类的OutputStreamWriter。这是一个连接字符流和字节流的桥梁。

  在本类中也提供了一些基本的字符流写入方法。

实例:

package com.fuwh.stream;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer; public class FileWriterTest01 { public static void main(String[] args) throws Exception{
//实例化字符文件输出流
Writer writer=new FileWriter(new File("wirter01.txt"),true);
writer.write("刘备:hello ");
writer.write("world!!!".toCharArray());
writer.close();
}
}

文件字符输入流:FileReader

此类的定义如下:

  public class FileReader extends InputStreamReader

跟字符文件输出流一样,不是直接继承自Reader,而是继承自一个字符输入流和字节输入流的桥梁类InputStreamReader。

实例:

package com.fuwh.stream;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader; public class FileReaderTest01 { public static void main(String[] args) throws IOException {
//实例化字符文件输入流,读取文件
File file=new File("wirter01.txt");
Reader reader=new FileReader(file);
char[] cbuf=new char[(int) file.length()];
reader.read(cbuf);
System.out.println(new String(cbuf));
reader.close();
}
}

Java IO(三)的更多相关文章

  1. java IO(三):字符流

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  2. Java IO(三)

    File File类的常见方法: 1.创建. boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false.和输出流不一样,输出流对象一建立就创建文 ...

  3. Java IO(三)--字节流基本使用

    I/O流分类: InputStream和Read的子类都有read(),用来读取单个字节或字节数组 OutputStream和write的子类都有write(),用来写入单个字节或字节数组 一般都是通 ...

  4. 系统学习 Java IO (三)----文件类 File

    目录:系统学习 Java IO---- 目录,概览 Java IO API 中的 File 类可以访问基础文件系统. 使用 File 类,可以: 检查文件或目录是否存在. 如果目录不存在,创建一个目录 ...

  5. Java IO(三) 之 FileInputStream

    前言: 对于文件系统中的文件.都能够使用FileInputStream流类以二进制的形式进行读取.可是因为Java本身的定位在JVM之上,没有处理计算机底层的能力.因此一些涉及底层处理的方法都是使用n ...

  6. 系统学习 Java IO ---- 目录,概览

    Java IO 类的系统教程,原创.主要参考自英文教程 Java IO Tutorial 和 Java Doc. http://tutorials.jenkov.com/java-io/index.h ...

  7. Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream

    Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...

  8. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  9. Java基础---IO(三)--IO包中的其他类

    第一讲     对象序列化 一.概述 将堆内存中的对象存入硬盘,保留对象中的数据,称之为对象的持久化(或序列化).使用到的两个类:ObjectInputStream和ObjectOutputStrea ...

  10. Java IO编程全解(三)——伪异步IO编程

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7723174.html 前面讲到:Java IO编程全解(二)--传统的BIO编程 为了解决同步阻塞I/O面临 ...

随机推荐

  1. vue 2.0之基础

    Vue Vue实例 创建实例: var vm = new Vue({ //code }) 数据与方法: 只有当实例被创建时 data 中存在的属性才是响应式的; Vm.b = 'h1' 是不会触发视图 ...

  2. MySQL_执行计划详细说明

          1 简要说明 id 表格查询的顺序编号. 降序查看,id相同的从上到下查查看. id可以为null ,当table为( union ,m,n )类型的时候,id为null,这个时候,id的 ...

  3. 【R语言系列】作图入门示例一

    假设有如下数据,我们使用plot函数作图 月龄 体重 月龄 体重  1 4.4 9 7.3 3 5.3 3 6.0 5 7.2 9 10.4 2 5.2 12 10.2 11 8.5 3 6.1 R语 ...

  4. alpha冲刺第十天

    一.合照 二.项目燃尽图 三.项目进展 之前卡住的注册无法插入数据的问题解决 可以呈现多条数据内容了,首页文章内容呈现,问答界面问题内容呈现 四.明日规划 很多没有完善的,后面还是要继续整改 五.问题 ...

  5. Beta冲刺NO.1

    Beta冲刺 第一天 1. 昨天的困难 由于今天还是第一天,所以暂时没有昨天的困难. 2. 今天解决的进度 潘伟靖: 对代码进行了review 1.将某些硬编码改为软编码 2.合并了一些方法,简化代码 ...

  6. Linux下ftp和ssh详解

    学习了几天Linux下ftp和ssh的搭建和使用,故记录一下.学习ftp和ssh的主要目的是为了连接远程主机,并且进行文件传输.废话不多说,直接开讲! ftp服务器 1. 环境搭建 本人的系统是Arc ...

  7. 《Language Implementation Patterns》之 解释器

    前面讲述了如何验证语句,这章讲述如何构建一个解释器来执行语句,解释器有两种,高级解释器直接执行语句源码或AST这样的中间结构,低级解释器执行执行字节码(更接近机器指令的形式). 高级解释器比较适合DS ...

  8. 【Swift】iOS导航栏错乱的原因

    #iOS开发高级技巧#导航栏错乱,也就是导航栏的显示效果与内容区不匹配,引发原因很多,其中最重要的有两个原因: 1.在viewwillappear,viewwilldisappear两个函数中,设置导 ...

  9. istio入门(01)istio是什么?

  10. JsonCPP库使用

    1.使用环境DevC++ a.建立C++工程,并添加.\JsonCPP\jsoncpp-master\jsoncpp-master\src\lib_json中源文件到工程中. b.添加头文件路径 2. ...