Java中的流

前言
IO流,它是Java种处理输入(将磁盘的数据输入到内存)和输出(将内存的数据输出到磁盘)数据的机制。
1 File类
(1)介绍
它是Java种表示一个文件或者目录的类,它与平台无关。
这个类中涉及到一些核心方法:创建、删除、重命名、修改时间、文件大小等。
(2)绝对路径和相对路径
绝对路径:是一个固定的路径,(在windows中)从盘符开始的。
相对路径:指相对于某个位置开始的路径
比如:我们在idea中进行编码,我们在E:\\WNHZ11\\code\\WNHZ11\\src下进行编码,其中E:\\WNHZ11\\code\\WNHZ11是我们的项目目录,这个目录下的src就是我们的“某个位置”,
我们的类在src\\com\\woniuxy\\day3\\io\\TestDemo.java
这个时候,我们要读取E:\\WNHZ11\\code\\WNHZ11\\imgs\\lixi.txt文档,那么路径该怎么写?
代码:E:\\WNHZ11\\code\\WNHZ11\\src\\com\\woniuxy\\day3\\io\\TestDemo.java
文件:E:\\WNHZ11\\code\\WNHZ11\\resources\\imgs\\lixi.txt
tartget/classes/com\\woniuxy\\day3\\io\\TestDemo.class
/imgs\\lixi.txt
绝对路径: new File("E:\\WNHZ11\\code\\WNHZ11\\resources\\imgs\\lixi.txt");
相对路径:new File("../resources/imgs/lixi.txt")
但是我们不推荐直接使用上面这个相对路径,因为你的代码会被编译生成class,然后编译过后路径中没有src。
使用类或者类的加载器作为相对路径
TestDemo.class的相对路径是以这个类本身作为“某个位置”。那么我们查询lixi.txt的相对路径:
../../../../../imgs/lixi.txt
TestDemo.class.getClassloader() : 类的加载器路径:
imgs/lixi.txt
结论: 读取文件,尽量类的加载器去读取相对路径。

(3)File类读取数据(推荐类加载器方式读取)

2 File类的常见方法

(1)读取一个 指定目录下的所有的子文件和子目录

递归

(2)统计目录的大小

(3)复制目录

3 IO流
3.1 简介

(1)按照流向

  • 输入流 : InputStream/Reader
  • 输出流 : OutputStream/Writer

(2)流的颗粒度(最小单位):

  • 字节流:InputStream/OutputStream
  • 字符流:Reader/Writer

(3)流的角色

  • 节点流:可以从/向一个特定的IO设备(磁盘、网络)读写数据的流。它还有一个名字叫做低级流
  • 处理流:对一个已经存在流进行包装的流,然后再实现数据的读写的流。高级流
3.2 流的原理以及数量(理解)

流可以被你想象一个“水管”。源头端和目的端相当于是两个“水桶”,数据就是水,水再两端之间通过水管传递。

以InputStream|Reader为例,水管中的每一滴水就是一个数据,如果是字节流,那么一个水滴就是一个字节。以字符流,那么一个水滴就是一个字符。

当创建一个流对象,in = new FileInputStream("path"),它底层有一个指针记录你的水从哪个位置开始传输。

3.3 InputStream

(1)FileInputStream

(2)SequenceInputStream

(3)ObjectInputStream | ObjectOutputStream

  • 序列化|反序列化

序列化: 存档

反序列化:读档

实现序列化接口的目的是为了申明这个类可以被序列化和反序列化

  • 写入

  • 读取

3.4OutputStream

FileOuputStream | ObjectOutputStream | ...

(1)BufferedInputStream | BufferedOutputStream

3.5 字符流

3.6 打印流

3.7 系统标准流

System.in : 输入,控制台

System.out :输出, 控制台

System.err : 错误输出,控制台

3.8 转换流

3.9 ZipInputStream | ZipOutputStream

压缩和解压缩

(1)压缩

(2)解压缩

3.10 RandomAccessFile

3.11 LineInputStream

行号输入流,读取有一个文件的行号,帮助你自动统计文件的行数

作业:利用这个流,统计你的工程种的所有的java文件,计算你一共写了多少代码

3.12 Properties

支持持久化的哈希表,一般用作于配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值