java I/O框架 (一)总览

摘要:
输入是指数据流到程序内存,输出是指数据从程序内存的流,io流是指从源到目标的数据流。数据流的源和目的地可以概括为以下几点:文件访问、网络访问、内存缓存访问、线程内部通信(管道)、缓冲区过滤、解析、读写文本、读写基本类型的数据(长、,
一.前言

  java io框架非常庞大,各种功能的类让人目不暇接,为了系统学习io框架,搜集了各种资料,整理出这篇文章,尽可能详细的讲述java io框架,其中会牵扯到许多信息,不仅包括框架内各种类的方法和使用对象,源码的解读(基于jdk1.8.0_60),同时还会从整个框架层次,学习java io框架的设计模式和思想,坑挖的很大,慢慢填.引用的资料也会在后面全部列出;

1.概述

  io流操作是java io的核心,io的是input/output的缩写,意思是输入与输出,我们以运行的java程序为主体,input就是数据流向程序内存,output就是指数据从程序内存流出,可以用下图表示

 java I/O框架 (一)总览第1张

  (1)从上图可以看出,io流就是数据从Source流向Destination的一个过程,而数据流的Sources和Destination我们可以概括为以下几种

  • 文件访问(file)
  • 网络访问
  • 内存缓存访问(Buffer)
  • 线程内部通信(Pipe管道)
  • 缓冲
  • 过滤
  • 解析
  • 读写文本 (Readers / Writers Text)
  • 读写基本类型数据 (long, int etc.)
  • 读写对象(Object)

  (2)当我们从读取或者写入文件时,数据是以字节(byte)或字符(char)的形式流动,依据不同形式读写的流,,java io中设计了四个类

  • InputStrem
  • Reader
  • OutputStream
  • Writer

  InputStreamOutputStream是字节的输入和输出,ReaderWriter是字符的输入和输出,java io中其他各种各样的类均是由这四种类派生而来

    java io框架根据io流针对的对象以及流的形式,设计了不同功能的类,我们可以在下表中查看,这些类也是我们重点学习的对象

                        Java IO classes

 2.文章目录

 下面我们也根据这个表,来学习java中各种流操作,以及一些和io相关的东西

1.文件操作(File)

2.基本流(InputStream,OutputStream,Reader,Writer)

3.文件流(FileInputStream,FileOutputStream,FileReader,FileWriter,RadomAccessFile)

4.转换流(InputStreamReader,OutputStreamWriter)

5.IO异常处理(IOException)

6.缓冲流(BufferedInputStream,BufferedOutputStream,BufferdeReader,BufferedWriter)

7.回退流(PushBackInputStream,PushBackReader)

8.管道流(PipeInputStream,PipeOutputStream,PipeReader,PipeWriter)

3.数组流(ByteArrayInputStream,ByteArrayOutputStream,CharArrayReader,CharArrayWriter)

10.打印流(PrinteStream,PrintWriter)

11.对象流(ObjectInputStream,ObjectOutputStream)

12.字符串流(StringReader,StringWriter)

13.数据流(DataInputStream,DataOutputStream)

14.其他流(StreamTokenizer,LineNumberReader,SequenceInputStream)

15.System.in和System.out 以及System.error

15.序列化(Serializable)

16.Java IO与装饰者模式

17.java NIO

 资料

免责声明:文章转载自《java I/O框架 (一)总览》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用GAN 进行异常检测——anoGAN,TODO,待用于安全分析实验DevExpress WPF应用界面开发入门教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Django用Apache和mod_wsgi部署

背景 最近写了一个Django在windows上运行,但是用的vbs命令,导致在后台运行的时候,必须用户登录才可以运行,还有就是登录之后,有其他进程可能被干掉。 Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c D:\xxd\run.bat",vbhide ` bat 内容 C:\Python3...

NPOI读取Excel

项目环境:Webform framework4.0 dll版本:NPOI2.0  dotnet2.0版本 这两天要做个excel导入的功能,想到以前用过NPOI,感觉很给力,今天写了个DEMO,写的时候还算顺利,毕竟以前用过,还是想记录下来,留着以后直接复制 把excel数据读取并拼接到DataTable中,为了使用SqlBulkCopy一次性拷贝到数据库...

Unity中对注册表进行修改

问题背景: PC端软件开发,当我在Unity中的PlayerSetting中设置好分辨率,每次打包运行后会记忆上次退出时窗口的分辨率(记忆窗口状态),导致下次打开时不是PlayerSetting中的初始设置,而是读取注册表记录的数据。而我的需求时必须每次进去时都是指定的那个分辨率。 问题纠结点: 1.注册表信息是否可删,怎么获取到删除 2.也不能直接删除整...

(转)大型分布式网站架构技术总结

本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布式网站架构有很好的参考价值。   本次分享大纲如下 大型网站的特点 大型网站架构目标 大型网站架构模式 高性能架构 高可用架构 可伸缩架构 可扩展架构 安全架构 敏捷架构 大型架...

[转]CURL常用命令

From:http://www.cnblogs.com/gbyukg/p/3326825.html 常用参数 -v/--verbose 小写的v参数,用于打印更多信息,包括发送的请求信息,这在调试脚本是特别有用。 -m/--max-time <seconds> 指定处理的最大时长 -H/--header <header> 指定请求头...

根据JavaScript中原生的XMLHttpRequest实现jQuery的Ajax

基本介绍 XmlHttpRequest XmlHttpRequest是JavaScript中原生的,历史悠久的一种发送网络请求的方案。 基本上所有前端框架对于网络请求的部分都是基于它来完成的。 在本章节中我们将了解它的基本用法,并且会实现一个与jQuery.ajax功能百分之九十相似的网络请求组件。 我是没有读过jQuery.ajax源码的,并且我也不是一...