一,什么是IO呢
1.输入流:把数据从其他设备上读取到内存中的流。
2.输出流:把数据从内存写到其他设备上的流。
3.格局数据的类型分为:字节流和字符流
3.1字节流:以字节为单位,读写数据的流。
3.2字符流:以字符为单位,读写数据的流。
4.字符流的顶级父类:InputStream(输入流)和OutputStream(输出流)。
** 二,字节流**
1.字节输出流
java.io.OutputStream抽象类是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。
1.1基本共性功能方法
public void close()
public void write(byte[] b)
public void write(byte[] b, int off, int len)
public abstract void write(int b)
1.2 FileOutputStream类是文件输出流,用于将数据写到文件。
其构造方法为
// FileOutputStream(File file)
//FileOutputStream(String name)
File file new File(".....")
FileOutputStream fos = new FileOutputStream(file);
写数据有三种方式:
- 写出字节 write(int b)
- 写出字节数组 write(byte[] b)
- 写出指定长度字节数组:write(byte[] b, int off, int len)
1.3数据追加续写
public FileOutputStream(File file, boolean append)//创建文件输出流以写入由指定的 File对象表示的 文件。
public FileOutputStream(String name, boolean append//: 创建文件输出流以指定的名称写入文件
1.4.写出换行
Windows系统里,换行符号是 \r\n
系统中的换行: Windows系统里,每行结尾是 回车+换行 ,即 \r\n ;
Unix系统里,每行结尾只有 换行 ,即 \n ;
Mac系统里,每行结尾是 回车 ,即 \r 。从 Mac OS X开始与Linux统一。
三,字节输入流
1.InputStream抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中。
2.其基本共性功能方法:
1.public void close()
2.public abstract int read()
3.public int read(byte[] b)
3.FileInputStream 类是文件输入流,从文件中读取字节
其两个构造方法为:
FileInputStream(File file)
FileInputStream(String name)
4.读取数据
- 读取字节 read 方法
- 使用字节数组读取read(byte[] b)
字符流
#字符输入流
1.Reader抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。
其有几种基本共性功能的办法。
//常用的方法
1.close()
2.public int read()//从输入流读取一个字符
3.read(char[] cbuf)//从输入流中读取一些字符,并将存储到字符数组cbuf中
2.FileReader类是读取字符文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。
注意:字节缓冲区:一个字节数组,用来临时存储字节数据。
//FileReader类的构造方法
FileReader(File file)
FileReader(String fileName)
#字符输出流
Writer抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。
其有几种基本共性功能的办法。
1.write(int c)//写入单个字符
2.write(char[] cbuf)//写入字符数组
2.abstract void write(char[],int off,int len)//写入字符数组的某一部分,off字符串开始索引,len写的字符个数。
4.write(String str)
5.write(String str, int off, int len)
6. flush() 刷新该流的缓冲。
2.FileWriter类是Write的子类。
其构造方法有两种。
1.FileWriter(File file)
2.FileWriter(String fileName)
3.写出字符: write(int b) 方法
4.写出字符数组 : write(char[] cbuf) 和 write(char[] cbuf, int off, int len)
5.写出字符串: write(String str) 和 write(String str, int off, int len)
File类
1.File类是文件和目录路径的抽象表示,主要用于文件和目录的创建,查找和删除等操作。
其构造方法有3种。
1.File(String pathname)
2.File(String parent, String child)
3.File(File parent, String child)//从父抽象路径名和子路径名字符串创建新的 File实例
//上面三种都可以创建文件对象,常用第一种方法。
2.文件常用的方法。
1. String getAbsolutePath() :返回此File的绝对路径名字符串。
2. String getPath() :将此File转换为路径名字符串。
3. String getName() :返回由此File表示的文件或目录的名称。
4. long length() :返回由此File表示的文件的长度。
3.绝对路径和相对路径
绝对路径:从盘符开始的路径,这是一个完整的路径。
相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。
exists()//file表示文件或目录是否实际存在
isDirectory()//是否为目录
isFile()//是否为文件
3.创建删除功能的方法
createNewFile()//创建一个新的文件
delete()//删除由此file表示的文件或目录
mkdir()//创建由此File表示的目录。
mkdirs()//创建由此File表示的目录,包括任何必需但不存在的父目录,就是可以创建多级目录
4目录的遍历
String[] list()//返回一个String数组,表示该File目录中的所有子文件或目录
File[] listFiles()//返回一个File数组,表示该File目录中的所有的子文件或目录
递归
1.递归指的是在当前方法内调用自己的方法的现象。
2.递归的分类:直接递归和间接递归(可以a方法调用b方法,b方法调用c方法,c方法调用a方法)
注意事项:
递归次数不能太多,还有一定条件限定,否则会发生栈内存溢出。
3.应用:递归打印多级目录
缓冲流
#字节缓冲流
#缓冲流是一种高效的流
1.字节缓冲流:BufferedInputStream和BufferedOutputStream
2.字符缓冲流:BufferedReader和BufferedWriter
其构造方法为
1.public BufferedInputStream(InputStream in)//创建一个新的缓冲输入流。
2.public BufferedOutputStream(OutputStream out)//创建一个新的缓冲输出流。
#字符缓冲流
其构造方法为
1.public BufferedReader(Reader in)//创建一个
新的缓冲输入流。
2.public BufferedWriter(Writer out)//创建一个新的缓冲输出流。
其特有的方法:
BuferedReader:public String readLine():读一行文字。
BufferedWriter:public void newLine():写一行行分隔符,由系统属性定义符号。