编程体系结构(04):JavaIO流文件管理
本文源码:GitHub·点这里 || GitEE·点这里
一、IO流分类
1、分类角度
流的方向
- 输入流:从数据源中读取数据到应用中的流;
- 输出流:从应用中将数据写入到目的地的流;
流数据类型
- 字节流:以字节形式来读写的流,标识是名称以Stream结尾;
- 字符流:以字符形式来读写的流,标识是名称以Writer、Reader结尾;
- 管道流:以数据块为单位来处理,缓冲区就是用于读写的数据块;
流的角色
- 节点流:可以从一个节点或者向一个节点读/写数据的流,也被称为低级流;
- 处理流:对存在的流进行连接或者封装、封装后的流来进行读/写、也被称为高级流。
2、API体系

5个核心类ObjectOutputStream:File、OutputStream、InputStream、Writer、Reader;
1关键接口:Serializable;
二、API细节分类
1、字节输入流

InputStream:字节输入流是所有字节输入流的父类、为所有字节输入流提供一个标准、和基本的与读取字节有关的方法及简单的实现。
FileInputStream:文件字节输入流以字节的形式将文件中数据读取到应用中;
BufferedInputStream:缓冲字节输入流,提供缓冲功能,提高效率;
ByteArrayInputStream:字节数组输入流用于读取其内置缓存字节数组中的字节;
PipedInputStream:管道字节输入流必须与PipedOutputStream结合使用,用于线程之间的通信;
FilterInputStream:过滤器字节输入流,重写InputStream方法,为字节输入处理流提供扩展;
DataInputStream:数据字节输入流,一般与DataOutputStream结合使用;
ObjectInputStream:对象字节输入流,与ObjectOutputStream结合使用;
2、字节输出流

OutputStream:字节输出流,InputStream作用一样,为所有字节输出流提供一个标准、定义了一些基本输出字节的方法与简单实现;
FileOutputStream:文件字节输出流,将字节写入指定目标的文件源中;
BufferedOutputStream:缓冲字节输出流,提供缓冲功能、提高效率;
ByteArrayOutputStream:字节数组输出流,将字节写入到其本身所带的一个内置缓存字节数组中;
PipedoutputStream:管道字节输出流,必须与PipedInputStream结合使用、用于线程之间的通信;
FilterOutputStream:过滤字节输出流,为字节输出处理流提供扩展;
DataOutputStream: 数据字节输出流,一般与DataInputStream结合使用;
ObjectOutputStream:对象字节输出流,通常与ObjectInputStream结合使用;
PrintStream:字节打印流,字节输出流进行装饰、提供打印各种数据类型的功能;
3、字符输入流

Reader:字符输入流,为所有字符输入流提供一个标准、只有基本的读取方法的定义和简单的实现;
InputStreamReader:字节转换流,将字节流转换成字符流,并且可以指定字节转成字符时使用的编码;
BufferedReader:缓冲字符输入流,为字符输入流提供缓冲功能、提高效率;
CharArrayReader:字符数组输入流,将其内置字符缓存数组中的数据读取到应用中;
PipedReader:管道字符输入流,与PipedWriter结合使用、用于线程之间的通信;
FilterReader:过滤字符输入流,为字符输入流提供扩展;
FileReader:文件字符输入流,字符的形式读取文件中的内容;
4、字符输出流

Writer:字符输出流,所有字符输出流提供一个标准,基本写入的方法和简单的实现;
OutputStreamWriter:字节输出转换流,用于将字节输出流转化成字符输出流。可以指定编码转化;
BufferedWriter:缓存字符输出流,提供缓冲功能、提高效率;
CharArrayWriter:字符输出流,用于将字符写入其内置缓存字符数组中;
PipedWriter:管道字符输出流,与PipedReader结合使用,用于线程之间的通信;
FileWriter:文件字符输出流,用于将字符写入到指定文件中;
PrintWriter:字符打印流,将各种数据以字符的形式打印;
三、File文件类
1、构造方法
File(String pathname):指定文件或者文件夹的路径创建一个File文件;
File(File parent,String child):根据parent抽象路径名和child路径名字符创建新的File实例;
2、路径问题
绝对路径:该文件在硬盘上的完整路径。绝对路径一般都是以盘符开头的。
相对路径: 相对路径就是资源文件相对于当前程序所在的路径。
. 当前路径
.. 上一级路径
3、文件的创建
createNewFile():在指定位置创建一个空文件,成功返回true,已存在就不创建然后返回false;
mkdir():在指定位置创建目录,这只会创建最后一级目录,上级目录不存在就抛异常;
mkdirs():在指定位置创建目录,这会创建路径中所有不存在的目录;
4、删除文件
delete() 删除文件或者一个空的文件夹,如果文件夹且不为空,则不能删除,成功返回true,失败返回false;
5、判断方法
exists():文件或文件夹是否存在;
isFile():是否是一个文件,如果不存在,则始终为false;
isDirectory():是否是一个目录,如果不存在,则始终是false;
6、获取文件信息
getName():获取文件或文件夹名称,不包含上级路径;
getPath():返回绝对路径,可以是相对路径,但是目录要指定
四、编码解码


字节流读取的是文件中的二进制数据,不会自动转为可以看懂的字符;字符流:把读到的数据进行对应的编码与解码。
五、源代码地址
GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile
推荐阅读:编程体系整理
| 序号 | 项目名称 | GitHub地址 | GitEE地址 | 推荐指数 |
|---|---|---|---|---|
| 01 | Java描述设计模式,算法,数据结构 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
| 02 | Java基础、并发、面向对象、Web开发 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆ |
| 03 | SpringCloud微服务基础组件案例详解 | GitHub·点这里 | GitEE·点这里 | ☆☆☆ |
| 04 | SpringCloud微服务架构实战综合案例 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
| 05 | SpringBoot框架基础应用入门到进阶 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆ |
| 06 | SpringBoot框架整合开发常用中间件 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
| 07 | 数据管理、分布式、架构设计基础案例 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
| 08 | 大数据系列、存储、组件、计算等框架 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
编程体系结构(04):JavaIO流文件管理的更多相关文章
- Java学习日记之 Java-IO流
Java中的IO流在处理上分为字节流和字符流.字节流和字符流的区别 : 1.字节流读取的时候,读到一个字节就返回一个字节: 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8 ...
- SSAS系列——【05】多维数据(编程体系结构)
原文:SSAS系列--[05]多维数据(编程体系结构) 1.什么是AMO? 翻译:AMO是SSAS中一个完整的管理类集合,它在Microsoft.AnalysisServices命名空间下,我们可以在 ...
- javaIO流实现读写txt文件
javaIO流实现文件读写 文件写入: InputStreamReader BufferedReader 文件读取: FileOutputStream package javatest.basic22 ...
- [一] java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念
本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍 什么是函数式编程? java程序员第一反应可能会理解成类的成员方法一类的东西 此处并不是这个含义,更接近是数学上的 ...
- JavaIO流中的拷贝
JavaIO流中对数据的操作尤为重要,掌握了基本的拷贝操作,才能将各种数据源的操作联系起来. 先来看看对文件夹的拷贝吧: /** * 利用递归实现文件夹的拷贝操作 * 分析:判断 * 是文件:调用拷贝 ...
- JavaIO 流(1)IO流介绍
IO流定义: 流的本质是一组单向有序,分起始和终止的数据传输过程.需要导入import java.io.* IO流分类: 按数据类型分为:字节流和字符流 字节流: 按字节进行读取(可以处理任意类型数据 ...
- Java基础 Java-IO流 深入浅出
建议阅读 重要性由高到低 Java基础-3 吃透Java IO:字节流.字符流.缓冲流 廖雪峰Java IO Java-IO流 JAVA设计模式初探之装饰者模式 为什么我觉得 Java 的 IO 很复 ...
- 完美解决JavaIO流报错 java.io.FileNotFoundException: F:\ (系统找不到指定的路径。)
完美解决JavaIO流报错 java.io.FileNotFoundException: F:\ (系统找不到指定的路径.) 错误原因 读出文件的路径需要有被拷贝的文件名,否则无法解析地址 源代码(用 ...
- javaIO -- 流的体系设计思路、基础分类
一.流 1. 流的含义 在程序设计中,流是对于数据流动传输的一种抽象描述任何有能力产出数据的数据源,或者有能力接受数据的接收端对象都是一个流. 2. 流的源和目的 数据可能从本地文件读取,或者写入, ...
随机推荐
- RPC的实现的三种方式
package com.bjsxt.service; import java.rmi.Remote; import java.rmi.RemoteException; /*** * 创建需要发布的服务 ...
- idea创建web项目,不能自动导入tomcat包,导致调用request的方法时,无法正常调用
问题现象 分析原因 reques不能正常调用它的各种方法是因为没有导入tomcat包,所以不能正常调用request对象中的各种方法. 解决办法 ================== ======== ...
- 冒泡排序的优化方案BubbleSort
<?php /** * 冒泡排序 * * ------------------------------------------------------------- * 思路分析:就是像冒泡一样 ...
- Android开发之TextView中间设置横线,适用于电商项目,商品原价之类的功能。
textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG ); //中间横线 textview.getPaint().setFlags(Pai ...
- Unity 内嵌网页
uniwebview 官网 http://uniwebview.onevcat.com/reference/class_uni_web_view.html http://uniwebview.onev ...
- iOS NSOperation
iOS NSOperation 一.简介 除了,NSThread和GCD实现多线程,配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOp ...
- python小白入门基础(二:变量)
#变量:可以改变的量就是变量,实际上是由内存开辟的一块空间,临时存在内存中,以便后续代码使用.#作用:代指内存中某个地址中的内容. #1.变量的概念name = "王五"name ...
- springboot2.x基础教程:Swagger详解给你的接口加上文档说明
相信无论是前端还是后端开发,都或多或少地被接口文档折磨过.前端经常抱怨后端给的接口文档与实际情况不一致.后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新.其实无论是前端调用后端,还是后端调用 ...
- BootStrap-select插件动态添加option无法显示
问题描述: 在使用bootstrap-select插件时出现下拉框无法显示动态追加的option,经过查看element元素发现,select标签已经append进去了所需的option选项,但是页面 ...
- 小程序开发-Map地图组件
Map组件 是原生组件,使用时请注意相关限制.个性化地图能力可在小程序后台"设置-开发者工具-腾讯位置服务"申请开通. 设置subkey后,小程序内的地图组件均会使用该底图效果,底 ...