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 ...
随机推荐
- Linux系统Java环境配置
1.卸载Linux系统自带的JDK java -version rpm -qa | grep -i java 我们要删除掉自带的JDK环境 rpm -e --nodeps java-1.6.0-ope ...
- python django web 端文件上传
利用Django实现文件上传并且保存到指定路径下,其实并不困难,完全不需要用到django的forms,也不需要django的models,就可以实现,下面开始实现. 第一步:在模板文件中,创建一个f ...
- 【非原创】Game23
#include<stdio.h>int main(){ int n,m,x=0,flag=0; scanf("%d%d",&n,&m); x=m/n; ...
- 从网上下载小说_keywords:python、multiprocess
# -*- coding: utf-8 -*- __author__ = "YuDian" from multiprocessing import Pool # Pool用来创建进 ...
- 20155222 2016-2017-2 《Java程序设计》第3周学习总结
20155222 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 要产生对象必须先定义类,类是对象的设计图,对象是类的实例. 数组一旦建立,长度就固定了. 字 ...
- 20155332 mybash的实现
mybash 的实现 码云链接 https://gitee.com/bestiisjava2017/laura5332/blob/master/%E4%BF%A1%E6%81%AF%E5%AE%89% ...
- Deep Learning 教程翻译
Deep Learning 教程翻译 非常激动地宣告,Stanford 教授 Andrew Ng 的 Deep Learning 教程,于今日,2013年4月8日,全部翻译成中文.这是中国屌丝军团,从 ...
- [POI2011]MET-Meteors
题面 题解 首先我们尝试暴力,那么就对每个点二分一下即可. 我们发现单独二分复杂度太高,而且有些地方很浪费,如求前缀和等. 那么我们就想,能否将它们合并在一起二分呢? 于是就有了整体二分 整体二分即可 ...
- 1135: [POI2009]Lyz
1135: [POI2009]Lyz https://lydsy.com/JudgeOnline/problem.php?id=1135 分析: hall定理+线段树连续区间的最大的和. 首先转化为二 ...
- 1、maven打包 install package deploy区别
maven package:打包到本项目,一般是在项目target目录下.如果a项目依赖于b项目,打包b项目时,只会打包到b项目下target下,编译a项目时就会报错. maven install:打 ...