一、File类
1.构造方法     2.常用方法
二、继承结构图
三、字节流
1.字节输入流     2.字节输出流
四、字符流
1.字符输入流     2.字符输出流     3.字符输入流plus:InputStreamReader
五、扩展:其他流
1.缓冲流     2.转换流     3.数据流     3.对象流

一、File类

File类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。

1.构造方法

(1)由一个完整的路径

File f1 = new File("D:\\ATC\\JAVA20201009\\study\\day20");

(2)由父路径+子路径

File f2 = new File("D:\\", "ATC\\JAVA20201009\\study\\day20");

(3)File对象+子文件(夹)名

File f3 = new File("D:\\ATC\\JAVA20201009\\study\\");
File f4 = new File(f3, "day20/a.txt");

路径的末端可以是文件夹或目录或文件名。

2.常用方法

返回值类型 方法 说明
String .getName() 获取文件(夹)名
String .getPath() 获取文件(夹)路径
boolean .exists() 文件(夹)是否存在
boolean .isFile() 是否是一个文件
boolean .isDirectory() 是否是一个目录(文件夹)
boolean .createNewFile() 创建一个文件
boolean .mkdir() 创建一个具体的文件夹
boolean .mkdirs() 创建多级文件夹
boolean .delete() 删除某个文件夹
String[] .list() 返回某个文件夹下的所有文件(夹)名
File[] .listFiles() 获取某个文件夹下所有的文件(夹)

二、继承结构图

三、字节流

1.字节输入流

(1)构造方法

new FileInputStream(String 文件路径/File文件对象);

(2)使用步骤

  • 使用构造方法创建字节输入流对象
  • 调用 .read(byte[] b) 方法,将数据转化为字节存入数组
  • 调用 .close()方法 关闭流对象

read方法还有如下两种用法:
.read()
返回一个字节,表示读取一个字节。
.read(byte[] b,int off,int len)
b为要存入的数组,off为存入数组的下标起点,len为读取长度,返回实际存入的字节数。

(3)扩展方法
.available() 返回字节输入流中可读取的字节个数

2.字节输出流

(1)构造方法

new FileOutputStream(String/Flie,boolean);

后面布尔参数可加可不加,若为true,表示往里追加而非覆盖。

(2)使用步骤

  • 使用构造方法创建字节输出流对象
  • 调用 .write(byte[] b) 方法,将字节数组写入目标文件中
  • 调用 .close()方法 关闭流对象

write方法还有如下两种用法:
.write(int b)
写入一个字节数据b。
.write(byte[] b,int off,int len)
b为要输出的数组,off为输出数组的下标起点,len为输出长度。

四、字符流

1.字符输入流

(1)构造方法

new FileReader(String/File);

(2)使用步骤

  • 构建流对象
  • 调用 .read(char[] c) 方法,将数据转化为字符存入数组
  • 调用 .close()方法 关闭流对象

read方法还有如下两种用法:
.read()
表示读取一个字符,返回一个字符,如果没有读到,返回-1。
.read(char[] c,int off,int len)
b为要存入的数组,off为存入数组的下标起点,len为读取长度,返回实际存入的字节数。

2.字符输出流

(1)构造方法

new FileWriter(String/File,boolean);

后面布尔参数可加可不加,若为true,表示往里追加而非覆盖。

(2)使用步骤

  • 构建流对象
  • 调用 .write(char[] c) 方法,将字符数组写入目标文件中
  • 调用 .close()方法 关闭流对象

write方法还有如下四种用法:
.write(int c)
写入一个字符数据c。
.write(String str)
写入一个字符串。
.write(String str,int off,int len)
str为要输出的字符串,off为输出字符串的下标起点,len为输出长度。
.write(char[] c,int off,int len)
c为要输出的字符数组,off为输出字符数组的下标起点,len为输出长度。

3.字符输入流plus:InputStreamReader

InputStreamReader 与普通字节输入流 FlieReader 的区别在于它可以指定编码格式,从而解决普通字节输入流可能会出现的乱码问题。
(1)构造方法

new InputStreamReader(字节输入流对象, charsetName);

charsetName为一段表示编码格式的字符串

(2)使用步骤

使用步骤和方法与字符输入流相同。

五、扩展:其他流

1.缓冲流

由于其带有缓冲区的特性,在进行特定大小内的数据操作时效率会更高。

  • BufferedInputStream
  • BufferedOutputStream
  • BufferedReader
  • BufferedWriter

用法:

new BufferedOutputStream(字节输出流对象,int a);

构造方法的第二个参数可以设置缓冲区的大小。

2.转换流

一般用来将字节输入/输出流转换为字符输入/输出流,写成链式。

  • InputStreamReader
  • OutputStreamWriter
    用法:
// 链式写法
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter((new FileOutputStream(""))));

3.数据流

性能提升有限,较少使用。

  • DataInputStream
  • DataOutputStream
    构造方法:
new DataInputStream(new FileInputStream(" "));

4.对象流

可以将对象序列化后保存在文件中,或者从文件中读取对象数据并反序列化为对象。
用法:

//创建对象输出流
ObjectOutputStream oos = new ObjectOutputStream(字节输出流对象);//创建要保存的对象并保存--序列化
oos.writeObject(对象);
oos.close();// 创建对象输入流
ObjectInputStream ois = new ObjectInputStream(字节输入流对象);//读取文件中的对象 -- 反序列化
Person person = (Person)ois.readObject();

小汤学编程之JAVA基础day13——I/O流相关推荐

  1. 小汤学编程之JAVA基础day12——异常

    一.什么是异常 1.程序错误类型     2.异常的分类     3.深入认识异常 二.异常的继承结构 三.常见的异常收集 四.虚拟机对异常的两种处理方式 1.捕获异常     2.声明和抛出异常 五 ...

  2. 小汤学编程之JAVA基础day05——数组

    一.概念 1.什么是数组      2.为什么要用到数组 二.使用方法 1.声明并分配空间      2.赋值     3.处理数据 三.数组的各种应用 1.求数组中最大/最小值      2.数组反 ...

  3. 小汤学编程之JAVA基础day04——流程结构

    一.认识流程图 二.顺序结构 三.选择结构 四.循环结构 五.扩展&代码块的概念 一.认识流程图 二.顺序结构 体现在程序进入某个方法后,从上到下没有分支的顺序执行. 三.选择结构 1.if选 ...

  4. 小汤学编程之JAVA基础day02——数据类型、Scanner类的使用

    一.JAVA的数据类型 1.变量      2.常量     3.基本数据类型     4.引用数据类型     5.数据类型转换 二.Scanner类的使用 1.作用      2.引入     3 ...

  5. 小汤学编程之JAVA基础day15——枚举、注解和Properties

    一.枚举 1.枚举的来由     2.枚举的作用     3.枚举的特点     4.扩展:switch里可以传入哪些类型的值 二.注解 1.作用     2.注解的种类     3.自定义注解    ...

  6. 小汤学编程之JAVA基础day14——xml和反射

    一.xml 1.简介     2.特点     3.使用步骤 二.Reflect反射 1.概念     2.理解Class类     3.反射的功能     4.两个案例 一.xml 1.简介 xml ...

  7. 小汤学编程之JAVA基础day11——集合框架:List/Set/Map集合、Collections集合工具类、泛型、TreeMap和TreeSet

    一.集合的特点 二.继承结构图 三.List集合 1.特点     2.ArrayList类     3.LinkedList类     4.两者的对比     5.集合的遍历 四.Set集合 1.特 ...

  8. 小汤学编程之JAVA基础day09——常用类(一):比较器、内部类和包装类

    一.比较器 1.内部比较器      2.外部比较器 二.内部类 1.成员内部类     2.静态内部类     3.局部内部类     4.匿名内部类 三.包装类 1.概念     2.包装类的应用 ...

  9. 小汤学编程之JAVA基础day07——面向对象(二):封装、继承与多态

    一.封装 1.使用步骤      2.优点     3.包结构     4.访问修饰符 二.继承 1.理解      2.重写     3.final的详解     4.防止被继承的两种方法 三.多态 ...

最新文章

  1. POJ.3207.Ikki's Story IV-Panda's Trick(2-SAT)
  2. 在Centos 6.5 上面配置 SVN
  3. 腾讯云短信出现there are both domestic mobile phone numbers and international mobile phone numbers in the...
  4. 如何优化WebRTC提升直播体验?
  5. JAVA UDP网络编程学习笔记
  6. oracle不属于集合操作,Oracle的几个集合操作
  7. C语言基础5-预编译部分知识(#include+.h文件和.c文件的区别
  8. AJAX请求中payload和formdata两种方式
  9. FFmpeg系列-2-命令行工具之FFmpeg
  10. linux添加静态ipv6路由,请问如何在CentOS7上配置已经静态路由好的IPv6地址块?
  11. CCF计算机职业资格认证考试201403-2“窗口”试题及答案
  12. 10个最佳PHP URL缩短器脚本
  13. 【华为机试】HJ2 计算某字符出现次数
  14. 世界杯 叮当 机器人 树莓派_世界杯营销大战,移动互联网谁捧起了大力神杯
  15. 阿里云直播鉴权和直播地址算法
  16. scroll-view的描点跳转
  17. moectf Amazing_eval
  18. python将txt文件转为字符串_python如何将txt文件转成json数据
  19. 【宝塔】【Windows】【Blessing-Skin】【我的世界】用宝塔Windows搭建皮肤站
  20. XGBoost和GBDT

热门文章

  1. (01)JVM-内存三大核心区域以及分析
  2. Educational Codeforces Round 39 G Almost Increasing Array
  3. jquery $(function(){}) $(document).ready(function(){}); (function(){}); 的区别以及作用
  4. python基础(四)运算
  5. 【计算机视觉】期刊整理
  6. 随机生成彩票的shell脚本
  7. Memcache for Windows
  8. Windows Phone 8.1 多媒体(3):音乐
  9. 知识资产投资——《程序员修炼之道》的建议
  10. 复旦大学提出《Meta-FDMixup》解决跨域小样本学习中的域偏移问题