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面临 ...
随机推荐
- [高级软件工程教学]团队Alpha阶段成绩汇总
一.作业地址: https://edu.cnblogs.com/campus/fzu/AdvancedSoftwareEngineering/homework/1408 https://edu.cnb ...
- 团队作业5-测试与发布(AIpha版本)
对于已完成的项目我们进行了诸多测试,找到了少许bug,对着这些bug我们在改进的基础上提出了新的目标. 1,测试环境:个人笔记本.个人台式机.环境windows7.网络校园网加移动vpn,浏览器360 ...
- Ubuntu安装使用latex
TeX Live is a TeX distribution to get up and running with the TeX document production system. To ins ...
- IT学习逆袭的新模式,全栈实习生,不8000就业不还实习费
大家好: 我是马伦,也就是多年耕耘在IT培训一线的老马.老马一直怀揣普惠教育梦想初心,一直为莘莘学子能获得高质量的IT教育服务而奋斗. 之前老马在IT培训机构任职讲师多年,也有丰富的教学管理经验.接触 ...
- OO第一次总结
第一次作业: 第一次作业的指导书发下来之后我按着上面的步骤一步一步的做了之后发现项目拉下来了,怎么开始码代码呢...然后在舍友的帮助下才知道怎么建包建类,然后对Java的语法又不是很了解,于是就先把C ...
- JAVA_SE基础——67.System类
System类对大家都不陌生吧! 以前经常需要打印结果时使用的都是"System.out.println()"语句,这句代码中就使用了System类.System类定义了一些与系统 ...
- 不允许用(a+b)/2这种方式求两个数的均值;如下程序在Linux和32位集成开发环境中运行
#define MAX(a,b) ((a)>(b)?(a):(b)) #include<stdio.h> int main() { int a = 10; int b = 20; i ...
- 使用pie.htc时Border-radius的兼容
如果一个图层中(navin)使用了pie.htc来对ie6,7,8进行兼容,如若上一层(navwrap)的样式中有背景的属性,则此层 (navin) 在ie6,7,8中背景颜色不显示.如下图:此部分的 ...
- wordpress怎么禁止文章复制
登陆你的网站后台--点击菜单栏的"外观"--点击"编辑"--在右侧,找到footer.php,打开它--在</body>之前加入以下代码: 1.禁止 ...
- emqtt 试用(三)mqtt 知识
一.概念 MQTT 协议客户端库: https://github.com/mqtt/mqtt.github.io/wiki/libraries 例如,mosquitto_sub/pub 命令行发布订阅 ...