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面临 ...
随机推荐
- 转载--MYSQL5.7:Access denied for user 'root'@'localhost' (using password:YES)解决方法
1.打开MySQL目录下的my.ini文件,在文件的最后添加一行"skip-grant-tables",保存并关闭文件; 2.重启MySQL服务; 3.通过cmd行进入MySQL的 ...
- 漫谈Java IO之 NIO那些事儿
前面一篇中已经介绍了基本IO的使用以及最简单的阻塞服务器的例子,本篇就来介绍下NIO的相关内容,前面的分享可以参考目录: 网络IO的基本知识与概念 普通IO以及BIO服务器 NIO的使用与服务器Hel ...
- Java基础学习笔记十六 集合框架(二)
List List接口的特点: 它是一个元素存取有序的集合.例如,存元素的顺序是11.22.33.那么集合中,元素的存储就是按照11.22.33的顺序完成的. 它是一个带有索引的集合,通过索引就可以精 ...
- gitignore忽略规则
我们用git提交本地代码时,有些文件或日志是不需要提交的,这个时候可以用.gitignore来解决这个问题: 首先,我们需要创建一个.gitignore文件,用命令输入 touch .gitignor ...
- 第十四,十五周PTA作业
1.第十四周part1 7-3 #include<stdio.h> int main() { int n; scanf("%d",&n); int a[n]; ...
- 20155306 2006-2007-2 《Java程序设计》第3周学习总结
20155306 2006-2007-2 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 认识对象 4.1 类与对象 定义类 1.先在程序中定义类: Clothes{ Str ...
- 每日冲刺报告-Day4
敏捷冲刺报告--Day4 情况简介 今天完成前端后端任务对接, GUI主体编写 任务进度 赵坤: 完成后端爬虫 李世钰: 前后端对接, GUI编写 黄亦薇:召集小组成员开会,帮助查找资料,寻找BUG ...
- listview 与 button 焦点 在item添加下列属性
android:descendantFocusability="blocksDescendants" http://zhaojianping.blog.51cto.com/7251 ...
- 完美解决某法院HP EVA8400删除VDISK问题
[故障描述] 某地法院一台HP EVA8400存储,2组扩展柜,物理磁盘由12个1T FATA磁盘(AG691A 454414-001)和10个300G 15K FC磁盘(AG690A 454411- ...
- 详解JavaScript对象继承方式
一.对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数,所以可使 Parent 构造函数成为 Children 的方法,然 ...