Java IO(三)
在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(三)的更多相关文章
- java IO(三):字符流
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Java IO(三)
File File类的常见方法: 1.创建. boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false.和输出流不一样,输出流对象一建立就创建文 ...
- Java IO(三)--字节流基本使用
I/O流分类: InputStream和Read的子类都有read(),用来读取单个字节或字节数组 OutputStream和write的子类都有write(),用来写入单个字节或字节数组 一般都是通 ...
- 系统学习 Java IO (三)----文件类 File
目录:系统学习 Java IO---- 目录,概览 Java IO API 中的 File 类可以访问基础文件系统. 使用 File 类,可以: 检查文件或目录是否存在. 如果目录不存在,创建一个目录 ...
- Java IO(三) 之 FileInputStream
前言: 对于文件系统中的文件.都能够使用FileInputStream流类以二进制的形式进行读取.可是因为Java本身的定位在JVM之上,没有处理计算机底层的能力.因此一些涉及底层处理的方法都是使用n ...
- 系统学习 Java IO ---- 目录,概览
Java IO 类的系统教程,原创.主要参考自英文教程 Java IO Tutorial 和 Java Doc. http://tutorials.jenkov.com/java-io/index.h ...
- Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream
Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...
- Java IO学习笔记三
Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...
- Java基础---IO(三)--IO包中的其他类
第一讲 对象序列化 一.概述 将堆内存中的对象存入硬盘,保留对象中的数据,称之为对象的持久化(或序列化).使用到的两个类:ObjectInputStream和ObjectOutputStrea ...
- Java IO编程全解(三)——伪异步IO编程
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7723174.html 前面讲到:Java IO编程全解(二)--传统的BIO编程 为了解决同步阻塞I/O面临 ...
随机推荐
- java多线程的(一)-之java线程的使用
一.摘要 每天都和电脑打交道,也相信大家使用过资源管理器杀掉过进程.而windows本身就是多进程的操作系统 在这里我们理解两组基本概念: 1.进程和线程的区别???? 2.并行与并发的区别???? ...
- python实现朴素贝叶斯
参考:<机器学习实战>- Machine Learning in Action 一. 基本思想 简单的说,用概率的高低来决定数据属于哪一类别,这就是贝叶斯决策理论的核心思想,即选择具有最 ...
- 学号:201621123032 《Java程序设计》第14周学习总结
1:本周学习总结 2:使用数据库技术改造你的系统 2.1:简述如何使用数据库技术改造你的系统.要建立什么表?截图你的表设计. 建立一个图书馆的表 建立读者用户个人的借书信息表---但是目前没有办法做到 ...
- 如何减小ios安装包大小
以前的老文章了,搬到cnblog 更小的安装包意味着更快的下载安装速度,也往往意味着更快的加载运行速度,是优化ios应用的一个重要方面,本文主要参考<减小iOS应用程序的大小>,在实际测试 ...
- vmware ubuntu蓝屏
ctrl+alt+f4 sudo apt-get update sudo apt-get upgrade sudo apt-get install xserver-xorg-lts-utopic su ...
- 几款有用的AndroidStudio插件
1.Android Parcelable code generator 顾名思义,这是个生成实现了Parcelable接口的代码的插件. 在你的类中,按下alt + insert键弹出插入代码的上下文 ...
- jstree的简单用法
一般我们用jstree主要实现树的形成,并且夹杂的邮件增删重命名刷新的功能 下面是我在项目中的运用,采用的是异步加载 $('#sensor_ul').data('jstree', false).emp ...
- JAVA_SE基础——11.Java中的运算符
在程序设计中,运算符应用得十分广泛,通过运算符可以将两个变量进行任意运算.数学中的"+"."-"."*"."/"运算符同 ...
- unity A*寻路 (三)A*算法
这里我就不解释A*算法 如果你还不知道A*算法 网上有很多简单易懂的例子 我发几个我看过的链接 http://www.cnblogs.com/lipan/archive/2010/07/01/1769 ...
- 2.sublime设置本地远程代码同步
1.打开编辑器输入框(Ctrl+Shift+P),并执行 2.回车后输入sftp 3.回车个后,右键项目 4.修改配置信息,保存