Java学习-IO流
2020-02-22 本文已影响0人
Spring_Dragon
title: IO流
date: 2020-02-02 21:51:26
tags:
-IO流
categories: Java学习
前言
最近系统的学习了一下JAVA里面的IO流,IO流是Java的重要特性,通过IO流可以很好的支持网络传输,这就是为什么说Java是为互联网而生的。
一,File类
要想了解IO流首先的学习file类:
1.file类定义
- java.io.file类是专门对文件进行操作的类,只能对文件本身进行操作,不能对文件内容进行操作。
- File类是“文件和目录路径名的抽象表示”,而不是指文件内容(IO)。
2.file类的构造方法与常用方法
构造方法 |
---|
File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File 实例。 |
File(URI uri) 通过将给定的 file: URI转换为抽象路径名来创建新的 File 实例。 |
File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File 实例。 |
Modifier and Type | Method and Description |
---|---|
boolean |
canRead() 测试应用程序是否可以读取由此抽象路径名表示的文件。 |
boolean |
canWrite() 测试应用程序是否可以修改由此抽象路径名表示的文件。 |
boolean |
createNewFile() 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。 |
boolean |
delete() 删除由此抽象路径名表示的文件或目录。 |
boolean |
exists() 测试此抽象路径名表示的文件或目录是否存在。 |
File |
getAbsoluteFile() 返回此抽象路径名的绝对形式。 |
String |
getName() 返回由此抽象路径名表示的文件或目录的名称。 |
boolean |
isDirectory() 测试此抽象路径名表示的文件是否为目录。 |
boolean |
isFile() 测试此抽象路径名表示的文件是否为普通文件。 |
boolean |
isHidden() 测试此抽象路径名命名的文件是否为隐藏文件。 |
long |
lastModified() 返回此抽象路径名表示的文件上次修改的时间。 |
long |
length() 返回由此抽象路径名表示的文件的长度。 |
boolean |
mkdir() 创建由此抽象路径名命名的目录。 |
boolean |
mkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。 |
String[] |
list() 返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。 |
二、IO流
2.1流的概念:
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流。流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
2.2IO流的分类:
根据处理数据类型的不同分为:字节流(二进制,可以处理一切文件,文本,音频等)和字符流(文本文件,只能是纯文本,像txt)。
根据数据流向不同分为:输入流和输出流。
image三、字节流
3.1字节输入流OutputStream
OutputStream此抽象类,是表示字节输出流的所有类的超类。操作的数据都是字节,定义了输出字节流的基本共性和方法。
常用方法
Modifier and Type | Method and Description |
---|---|
void |
close() 关闭此输出流并释放与此流相关联的任何系统资源。 |
void |
flush() 刷新此输出流并强制任何缓冲的输出字节被写出。 |
void |
write(byte[] b) 将 b.length 字节从指定的字节数组写入此输出流。 |
void |
write(byte[] b, int off, int len) 从指定的字节数组写入 len 个字节,从偏移 off 开始输出到此输出流。 |
abstract void |
write(int b) 将指定的字节写入此输出流。 |
3.2字节输出流InputStream
InputStream此抽象类,是字节输入流的所有类的超类。定义了字节输入流的基本共性功能方法。
常用方法
Modifier and Type | Method and Description |
---|---|
int |
available() 返回从该输入流中可以读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞。 |
void |
close() 关闭此输入流并释放与流相关联的任何系统资源。 |
void |
mark(int readlimit) 标记此输入流中的当前位置。 |
boolean |
markSupported() 测试这个输入流是否支持 mark 和 reset 方法。 |
abstract int |
read() 从输入流读取数据的下一个字节。 |
int |
read(byte[] b) 从输入流读取一些字节数,并将它们存储到缓冲区 b 。 |
int |
read(byte[] b, int off, int len) 从输入流读取最多 len 字节的数据到一个字节数组。 |
void |
reset() 将此流重新定位到上次在此输入流上调用 mark 方法时的位置。 |
long |
skip(long n) 跳过并丢弃来自此输入流的 n 字节数据。 |
四、字符流
4.1读取字符流Reader
用于读取字符流的抽象类。 子类必须实现的唯一方法是read(char [],int,int)和close()。 然而,大多数子类将覆盖这里定义的一些方法,以便提供更高的效率,附加的功能或两者。
构造方法
Modifier | Constructor and Description |
---|---|
protected |
Reader() 创建一个新的字符流阅读器,其关键部分将在阅读器本身上同步。 |
protected |
Reader(Object lock) 创建一个新的字符流阅读器,其关键部分将在给定对象上同步。 |
常用方法
Modifier and Type | Method and Description |
---|---|
abstract void |
close() 关闭流并释放与之相关联的任何系统资源。 |
void |
mark(int readAheadLimit) 标记流中的当前位置。 |
boolean |
markSupported() 告诉这个流是否支持mark()操作。 |
int |
read() 读一个字符 |
int |
read(char[] cbuf) 将字符读入数组。 |
abstract int |
read(char[] cbuf, int off, int len) 将字符读入数组的一部分。 |
int |
read(CharBuffer target) 尝试将字符读入指定的字符缓冲区。 |
boolean |
ready() 告诉这个流是否准备好被读取。 |
void |
reset() 重置流。 |
long |
skip(long n) 跳过字符 |
4.2写入字符流流Write
用于写入字符流的抽象类。 子类必须实现的唯一方法是write(char [],int,int),flush()和close()。 然而,大多数子类将覆盖这里定义的一些方法,以便提供更高的效率,附加的功能或两者。
构造方法
Modifier | Constructor and Description |
---|---|
protected |
Writer() 创建一个新的人物流作家,其关键部分将在作者本身上同步。 |
protected |
Writer(Object lock) 创建一个新的字符流写入器,其关键部分将在给定对象上进行同步。 |
常用方法
Modifier and Type | Method and Description |
---|---|
Writer |
append(char c) 将指定的字符附加到此作者。 |
Writer |
append(CharSequence csq) 将指定的字符序列附加到此作者。 |
Writer |
append(CharSequence csq, int start, int end) 将指定字符序列的子序列附加到此作者。 |
abstract void |
close() 关闭流,先刷新。 |
abstract void |
flush() 刷新流。 |
void |
write(char[] cbuf) 写入一个字符数组。 |
abstract void |
write(char[] cbuf, int off, int len) 写入字符数组的一部分。 |
void |
write(int c) 写一个字符 |
void |
write(String str) 写一个字符串 |
void |
write(String str, int off, int len) 写一个字符串的一部分。 |