编程体系结构(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. 流的源和目的 数据可能从本地文件读取,或者写入, ...
随机推荐
- 牛客网PAT练兵场-旧键盘打字
题目地址:https://www.nowcoder.com/pat/6/problem/4059 题解:用数组下标标记,直接模拟 /** * *作者:Ycute *时间:2019-12-01-21.3 ...
- 牛客网PAT练兵场-跟奥巴马一起编程
题目地址: 题意:无 /** * *作者:Ycute *时间:2019-11-14-21.29.07 *题目题意简单描述:模拟题输出 */ #include<iostream> #incl ...
- 使用Wasserstein GAN生成小狗图像
一.前期学习经过 GAN(Generative Adversarial Nets)是生成对抗网络的简称,由生成器和判别器组成,在训练过程中通过生成器和判别器的相互对抗,来相互的促进.提高.最近一段时间 ...
- Nginx反向代理的使用
一.Nginx的基本命令 nginx:启动 nginx nginx -t :测试配置文件是否有语法错误 nginx -s reopen:重启Nginx nginx -s reload:重新加载Ngin ...
- jdk8的下载、安装、配置
jdk官方网址:https://www.oracle.com/java/technologies/javase-downloads.html 小编微信和公众号(很高兴能与各位交流学习) 以下是具体步骤 ...
- SEO诊断方案以及执行方案
http://www.wocaoseo.com/thread-127-1-1.html 今天和大家一起讨论一下SEO诊断方案以及SEO执行方案要怎么写,主要从哪些方面进行呢,做SEO的朋友们一直在探讨 ...
- 深入理解C++中的new/delete和malloc/free动态内存管理
malloc/free和new/delete的区别 malloc/free是C/C++标准库的函数:new/delete是C++操作符. malloc/free只是动态分配内存空间/释放空间:new/ ...
- 2. Bean Validation声明式校验方法的参数、返回值
你必须非常努力,才能干起来毫不费力.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众 ...
- Mysql如何将某个字段的值,在原有的基础上+1?
Eg: 电商项目中,需要统计某件商品的购买数量问题,这时产品提了一个bug,告诉你我需要你做一个购买数量统计?你会怎么做呢? 这里我只说我自己的思路,首先是浏览加购物车,创建订单并支付,mq消息消费后 ...
- 游戏UI系统设计
1.需要实现的功能 UI界面的管理(窗体加载.窗体显示.窗体隐藏.窗体销毁等) UI分层次(比如弹窗.广播信息需要在上层) UI界面的出场.入场动画 UI界面的显示效果(比如带透明背景.带高斯模糊背景 ...