03 JAVA IO
java.io包中定义了多个流类型来实现输入输出功能,以不同的角度进行分类:
按数据流的方向不同可以分为输入流和输出流
按处理数据单位不通可以分为字节流和字符流
按照功能不同可以分为节点流和处理流
所有流类型位于包java.io内都分别继承自一下四种抽象流类型

节点流可以从一个特定的数据源读写数据
处理流是“”连接“”在已存在的流之上,通过对数据的处理为程序提供更为强大的读写功能
InputStream
继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit)
下图中深色为节点流、浅色为处理流

OutputStream
继承自OutputStream的流都是用于程序中输入数据,且数据的单位为字节(8bit)
下图中深色为节点流、浅色为处理流

Reader
继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16bit)
下图中深色为节点流、浅色为处理流

Writer
继承自Writer的流都是用于程序中输入数据,且数据的单位为字符(16bit)
下图中深色为节点流、浅色为处理流

几个程序小例子来阐明具体用法:
FileInputStream和FileOutputStream用法
FileInputStream和FileOutputStream是字节流,只能单个字节传递,而汉字是双字节的,所以不能识别汉字
import java.io.*;
public class IOtest {
public static void main(String[] args)
{
int b=0;
FileInputStream in=null;
FileOutputStream out=null;
try {
in=new FileInputStream("g:/1.txt");
out=new FileOutputStream("g:/2.txt");
while((b=in.read())!=-1)//in.read()不为-1说明还未访问完输入流
{
out.write(b);//按照字节写入
}
in.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
FileReader和FileWriter用法
FileReader和FileWriter是字符流,可以传递汉字
import java.io.FileReader;
import java.io.FileWriter; public class Reader_writer { public static void main(String[] args) {
int c=0;
FileReader fr=null;
FileWriter fw=null;
try {
fr=new FileReader("g:/1.txt");
fw=new FileWriter("g:/2.txt");
while((c=fr.read())!=-1)
{
fw.write(c);
}
fr.close();
fw.close();
} catch (Exception e) { }
} }
BufferInputStream套接FileInputStream用法
import java.io.BufferedInputStream;
import java.io.FileInputStream; public class BufferInputStream { public static void main(String[] args) {
// TODO Auto-generated method stub try {
FileInputStream fis=new FileInputStream("g:/1.txt");
BufferedInputStream bis=new BufferedInputStream(fis);//对象流
int c=0;
System.out.println(bis.read());
System.out.println(bis.read());
bis.mark(0);//标记位置0
for(int i=0;i<10&&(c=bis.read())!=-1;i++)
{
System.out.println((char)c+" ");
} bis.reset();//回到标记位置,即位置0
for(int i=0;i<10&&(c=bis.read())!=-1;i++)
{
System.out.println((char)c+" ");
}
bis.close();
} catch (Exception e) {
// TODO: handle exception
} } }
未完待续
03 JAVA IO的更多相关文章
- java io系列01之 "目录"
java io 系列目录如下: 01. java io系列01之 "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括 ...
- Java IO设计模式(装饰模式与适配器模式)
01. 装饰模式 1. 定义 Decorator装饰器,就是动态地给一个对象添加一些额外的职责,动态扩展,和下面继承(静态扩展)的比较.因此,装饰器模式具有如下的特征: 它必须持有一个被装饰的对象(作 ...
- java io系列08之 File总结
本文对File的API和常用方法进行介绍. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_08.html File 介绍 File 是“文件”和“目 ...
- java io系列12之 BufferedInputStream(缓冲输入流)的认知、源码和示例
本章内容包括3个部分:BufferedInputStream介绍,BufferedInputStream源码,以及BufferedInputStream使用示例. 转载请注明出处:http://www ...
- java io系列13之 BufferedOutputStream(缓冲输出流)的认知、源码和示例
本章内容包括3个部分:BufferedOutputStream介绍,BufferedOutputStream源码,以及BufferedOutputStream使用示例. 转载请注明出处:http:// ...
- java io系列03之 ByteArrayOutputStream的简介,源码分析和示例(包括OutputStream)
前面学习ByteArrayInputStream,了解了“输入流”.接下来,我们学习与ByteArrayInputStream相对应的输出流,即ByteArrayOutputStream.本章,我们会 ...
- [19/03/29-星期五] IO技术_File(文件)类(可操作文件,不能操作其里边内容,位于Java.io 包中)&递归遍历
一.概念 java.io.File类:代表文件和目录. 在开发中,读取文件.生成文件.删除文件.修改文件的属性时经常会用到本类. 以pathname为路径创建File对象,如果pathname是相对路 ...
- [Java IO]02_字节流
概要 字节流有两个核心抽象类:InputStream 和 OutputStream.所有的字节流类都继承自这两个抽象类. InputStream 负责输入,OutputStream 负责输出. 字节流 ...
- java io系列16之 PrintStream(打印输出流)详解
本章介绍PrintStream以及 它与DataOutputStream的区别.我们先对PrintStream有个大致认识,然后再深入学习它的源码,最后通过示例加深对它的了解. 转载请注明出处:htt ...
随机推荐
- shell习题第8题:监控nginx的502状态
[题目要求] 服务器上跑的是LNMP环境,近期总是有502现象.502为网站访问的状态码,200正常,502错误是nginx最为普遍的错误状态码. 由于502只是暂时的,并且只要一重启php-fpm服 ...
- Spark Streaming核心概念与编程
Spark Streaming核心概念与编程 1. 核心概念 StreamingContext Create StreamingContext import org.apache.spark._ im ...
- 树莓派 ubuntu16.04 安装SSH 配置SSH 开机自启SSH
入手个树莓派3B 装了 ubuntu 16.04 需要用到SSH 记录下 0.先获得树莓派IP 树莓派 使用网线连接路由器和树莓派 在路由器设置页面(一般是192.168.1.1具体看路由器的型号和设 ...
- 核密度估计 Kernel Density Estimation (KDE) MATLAB
对于已经得到的样本集,核密度估计是一种可以求得样本的分布的概率密度函数的方法: 通过选取核函数和合适的带宽,可以得到样本的distribution probability,在这里核函数选取标准正态分布 ...
- 20155206 2016-2017-2 《JAVA程序设计》 第二周学习总结
20155206 2016-2017-2<JAVA程序设计>第二周学习总结 教材学习内容总结 类型 整数 字节 浮点数 字符 布尔 变量 变量在命名时,不可以使用数字或一些特殊字符:*.& ...
- 20155319 2016-2017-2《Java程序设计》课程总结
20155319 2016-2017-2<Java程序设计>课程总结 每周作业链接 预备作业1:亦师亦友--我所期望的师生关系,对专业的认识与期望等 预备作业2:没有了自主,学习的小船说翻 ...
- 20155323 第四次实验 Android程序设计实验报告
20155323 第四次实验 Android程序设计实验报告 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局管理器的使用: ...
- 最简单的rman操作
连接: [root@oracle000 ‾]# su - oracle [oracle@oracle000 ‾]$ rman target / lines) Recovery Manager: Rel ...
- day2 RHCE
1.配置SELINUX 在system1和system2上要求SeLinux的状态为enforcing.要求系统重启后依然生效. server [root@server0 ~]# getenforce ...
- CF 959 E. Mahmoud and Ehab and the xor-MST
E. Mahmoud and Ehab and the xor-MST https://codeforces.com/contest/959/problem/E 分析: 每个点x应该和x ^ lowb ...