IO流详解

本文详细介绍了Java中的File类,包括其构造方法和常用操作,以及IO流的概念、分类(按流向、单位和功能)、主要流家族(字节流和字符流)及其首领类。重点讲解了FileInputStream,FileOutputStream,FileReader,FileWriter等文件专属流,以及BufferedInputStream,BufferedReader等缓冲流的使用和原理。
摘要由CSDN通过智能技术生成

1.File文件类

1.文件可以认为是记录和数据的集合

2.在java中提供了一个专门对文件进行操作的类File

3.File文件类在java中是文件和目录路径名的抽象表示,也就是仅仅代表一个路径。

4.File类中有一些获取文件属性的方法和对文件进行操作的方法

5.在Windos中文件路径分隔符是 \,在Linux中是/

6.对于IDEA来说当前默认路径是当前项目的根路径

1.1File类的常用构造方法
构造方法名备注
File(String pathname)pathname文件/文件夹路径
1.2File类的常用方法
方法名作用
boolean exists()判断文件/文件夹是否存在
boolean delete()删除文件或文件夹
boolean mkdirs()创建多重文件夹
boolean mkdir()创建文件夹
boolean createNewFile()创建文件
isFile()判断该文件/文件夹是不是文件
boolean isDirectory()判断该文件/文件夹是不是文件夹
isHidden()判断该文件/文件夹是否隐藏
String getPath()获取文件/文件夹的路径
File getAbsoluteFile()获取文件/文件夹的绝对路径(返回值:File)
String getName()获得文件/文件夹名字
String getParent()获取当前文件/文件夹的父路径
File getParentFile()获取文件/文件夹的父文件/文件夹(返回值:File)
long lastModified()获取文件/文件夹最后一次修改时间
long length()获取文件大小;获取文件夹里面的文件个数
String[] list()获取文件夹的文件名字以String[]返回
File[] listFiles()获取文件夹的文件名字以File[]返回

2.IO流是什么

IO指的是Input/Output,IO流:输入输出流。 统称为数据流(IO Stream)

在Java程序中,对于数据的输入 / 输出操作以流的方式进行;流是从起源到接收的有序数据。JDK提供了各种各样的流类,用以获取不同种类的数据;

3.IO流的分类

按流向分:

◦ 输入流:程序可以从中读取数据的流

◦ 输出流:程序能向其中写入数据的流

按数据传输单位分:

◦ 字节流:以字节为单位传输数据的流

◦ 字符流:以字符为单位传输数据的流

按功能分:

◦ 节点流:用于直接操作目标设备的流

◦ 处理流:是对一个已存在的流的连接和封装,通过对数据的处理为程序提供更强大、灵活的读写功能

4.IO流的四大家族首领

  • 字节流

  1. java.io.InputStream 字节输入流

  2. java.io.OutputStream 字节输出流

  • 字符流

  1. java.io.Reader 字符输入流

  2. java.io.Writer 字符输出流

注意:

四大家族的首领都是抽象类。(abstract class) 所有的流都实现了: java.io.Closeable接口,都是可关闭的,都有 close() 方法。 流是一个管道,这个是内存和硬盘之间的通道,用完之后一定要关闭,不然会耗费(占用)很多资源。养成好习惯,用完流一定要关闭。 所有的 输出流 都实现了: java.io.Flushable接口,都是可刷新的,都有 flush() 方法。 养成一个好习惯,输出流在最终输出之后,一定要记得flush()刷新一下。这个刷新表示将通道/管道当中剩余未输出的数据强行输出完(清空管道!)刷新的作用就是清空管道。 ps:如果没有flush()可能会导致丢失数据。

在java中只要“类名”以 Stream 结尾的都是字节流。以“ Reader/Writer ”结尾的都是字符流。

原文链接:Java IO流(超详细!)-CSDN博客

5.要掌握的流

1.文件专属

  • java.io.FileInputStream(掌握)

  • java.io.FileOutputStream(掌握)

  • java.io.FileReader

  • java.io.FileWriter

2.转换流

  • java.io.InputStreamReader

  • java.io.OutputStreamWriter

3.缓冲流

  • java.io.BufferedReader

  • java.io.BufferedWriter

  • java.io.BufferedInputStream

  • java.io.BufferedOutputStream

4.数据流

  • java.io.DataInputStream

  • java.io.DataOutputStream

5.标准输出流(打印流)

  • java.io.PrintWriter

  • java.io.PrintStream(掌握)

6.对象序列化流

  • java.io.ObjectInputStream(掌握)

  • java.io.ObjectOutputStream(掌握)

6.常用流构造方法及其常用方法

原文链接:Java IO流(超详细!)-CSDN博客

7.缓冲流及其原理

一、概述

缓冲流,也叫高效流,它可以对那些基本的字节字符流进行增强,达到提高数据的读写能力。

二、缓冲流原理

创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。

注意:

  1. 缓冲区不是越大越好的,因为缓冲区占用的是内存,缓冲区过大就会出现内存空间占用严重。

  2. 一般默认的缓冲区为 8M

三、缓冲流分类

因为是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类:

  • 字节缓冲流BufferedInputStreamBufferedOutputStream

  • 字符缓冲流BufferedReaderBufferedWriter

  • 原文链接:缓冲流详解-CSDN博客

8.参考博客

Java IO流(超详细!)-CSDN博客

 缓冲流详解-CSDN博客

  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值