博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java IO详解一(流及其类的关系)
阅读量:5230 次
发布时间:2019-06-14

本文共 2516 字,大约阅读时间需要 8 分钟。

1.什么是流?

流是一组有顺序,有起点、终点点的字节集合,其本质是数据传输,根据数据传输特性将其抽象为各种类方便数据操作。

2.流的类结构

3.流的分类

流分为字节流与字符流,输入流与输出流

字节流与字符流

字节流:字节流一次能读入或读出8位二进制

字符流:字符流一次能读入或读出16位二进制

字节流能处理一切数据类型,字符流只能处理字符类型的数据

4.输入流与输出流

输入流只能进行读操作,输出流只能进行写操作

5.InputStream 输入流

InputStream输入流是IO流中所有输入字节流的父类,是一个抽象类

ByteArrayInputStream,FileInputStream,StringBufferInputStream分别是的三种基本的介质流,分别从byte数组,本地文件,StringBuffer中读取数据

ObjectInputStream和所有FilterInputStream的子类装饰流(例如读取以某个后缀结尾的文件)

PipedInputStream是从与其他进程共用的管道中读取数据

6.OutputStream 输出流

OutputStream输出流是IO流中所有输出流的父类,是一个抽象类

与上面的InputStream相对应,InputStream是读入,OutputStream是写出

这里说一下我理解的读入与写出

InputSream或者Reader是读入操作就是将数据读入内存中,OutputStream或Writer是写出操作就是将内存中的数据写出

这里我是以内存作为参照物

7.节点流

节点流直接与数据相连,读入或写出

父类:InputStream,OutputStream,Reader,Writer

文件:FileInputStream,FileOutputStream,FileReader,FileWriter(对文件进行处理的节点流)

数组:ByteArrayInputStream,ByteArrayOutputStream,CharArrayReader,CharArrayWriter(对数组进行处理的节点流)

字符串:StringReader,StringWriter(对字符串处理的节点流)

管道:PipedInputStream,PipedOutputStream,PipedReader,PipedWriter(对管道处理的节点流)

8.处理流

处理流要和节点流一起使用,将节点流包装在处理流中

常用的处理流

缓冲流:BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter(使用缓冲流可避免频繁读写磁盘)

转换流:InputStreamReader,OuputStreamWriter(实现字节与字符的转换)

数据流:DataInputStream,DateOutputStream(将基础数据类型写到文件或读取出来)

9.综合输入输出流实现文件的复制

 

1 package IO; 2  3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7  8 //文件复制 9 public class CopyFile {10 11     public static void main(String[] args) {12         // TODO Auto-generated method stub13         String old_path = "E:" + File.separator + "newWorkSpace" + 14                       File.separator + "tmp" + File.separator + "new.txt";15        String new_path = "E:"+File.separator+"newWorkSpace"+16                       File.separator+"new.txt";17        copyFile(old_path, new_path);18     }19 20     public static void copyFile(String old_file, String new_file) {21 22         FileInputStream fis = null;23         FileOutputStream fos = null;24         try {25             fis = new FileInputStream(old_file);26             int size = fis.available();//27             byte b []= new byte[size];28             // 将输入流内容以字节的方式读到数组中29             fis.read(b);30             fos = new FileOutputStream(new_file);31             // 将数组的内容写到输出流中32             fos.write(b);33         } catch (Exception e) {34             // TODO Auto-generated catch block35             e.printStackTrace();36         }37     }38 }

 

转载于:https://www.cnblogs.com/lemmo/p/7862521.html

你可能感兴趣的文章
[转] 40个全球免费开放的电子图书馆(给能看懂英文的用)
查看>>
线上故障处理——大量异常堆栈日志输出影响服务可用性
查看>>
POJ 2187 Beauty Contest(凸包,旋转卡壳)
查看>>
MSSQLSERVER跨服务器连接
查看>>
FileUtils
查看>>
表单重复提交问题
查看>>
go实现生产者消费者
查看>>
计算机网络基础识别
查看>>
nyoj 星期几?
查看>>
本地无sqlserver服务下操作数据库 之GSQL
查看>>
客户端请求页面的方式和提交数据的方式
查看>>
Dash与Alfred结合配置
查看>>
jquery高级函数
查看>>
《Cloud Native Infrastructure》CHAPTER 2(1)
查看>>
C# 复制文件夹内所有内容
查看>>
python 冒泡排序
查看>>
jsp视频如何播放
查看>>
java后台获取cookie里面值得方法
查看>>
codevs1080线段树练习
查看>>
第四篇:数据预处理(一) - 缺失值处理
查看>>