一、IO流的分类。
IO:首先io是指input output 输入输出流,输入输出是对于程序而言的。
IO:分类:
1、按照输出的数据类型不同
字节流 输入输出时候按照字节输入输出
字符流 输入输出时候按照字符输入输出
2、按照流的方向:
输入流 Input
输出流 Output
3、按照处理功能
节点流
处理流
二、File类
File f= new File(“路径”); 创建的是一个file对象,无需注意该路径或者文件是否存在该对象都能被创建,路径可以是目录或者文件。注意使用分隔符时候要两个\其中一个会被转译
也可以使用与操作系统无关的路径分隔符File.pathSeparator路径结束符号;File.separator路径分隔符
file常用方法:
f.canExecute()是否可执行
f.canWrite()是否可写
f.canRead()是否可写
f.compareTo(f)判断两个路径是否相等,返回0相等
f.getPath()获取相对路径
f.createNewFile()创建文件,创建时要确保该路径存在,否则报错
f.isAbsolute()是否是绝对路径
f.getAbsolutePath()获取绝对路径
f.getName()获取文件名
f.getParent()获取父级目录
f.getFreeSpace()获取剩余大小
f.getTotalSpace()获取总大小
f.getUsableSpace()获取可用大小
f.lastModified()上次修改时间
f.length()获取文件大小(字节)
f.listFiles()返回当前目录下的子目录和文件的File对象
f.mkdir() 创建目录,只能在当前路径下创建一级目录
f. isDirectory() 是否是目录
f.isFile() 是否是文件
f.mkdirs() 可以创建多级目录
三、文件输入流FileInputStream
InputStream:这是所有字节输入流的父类
1、作用:
FileInputSteam的作用是将文件读取进程序中。
2、常用构造方法:
FileInputSteam fs = new FileInputSteam(File file);//把一个file对象作为参数传入
FileInputSteam fs = new FileInputSteam(String name);//直接把文件路径作为字符串参数传入
3、常用方法:
int ch = fs.read();//每次都只读入一个字节的数据,返回int,可强制转换成char字符
int length = fs.read(byte[] b);//将读取到的数据存到字节数组中,返回读取到的字节数length
int length = fs.read(byte[] b,int off,int len);//同上,从off开始读,读取len的长度。
void fs.close//使用流时候,不要忘了用close关闭资源释放内存
4、如何使用
FileInputStream:文件字节输入流 数据源在文件中 读取按照字节读取 流的方向是输入
获取实例的方法:InputStream is = new FileInputStream(“文件全路径名”);
或者:
File(“文件全路径名”)
FileInputStream fs = new FileInputStream(file)
常用方法:
int bit = is.read();读取一个字节的数据。返回一个int类型字符,没有内容则返回-1
byte[] buf = new byte[1024];
len = is.read(buf) 读取该byte数组的长度并保存到该byte数组中,返回读取到的长度(字节)
输入流的格式:
1、创建对象
2、读取数据
3、分析数据
4、关闭资源
四、文件输出流FileOutputStream
OutputStream:这是所有字节输出流的父类
FileOutputStream:输出的目的是文件 输出流 输出的类型是字节
输出的时候如果 文件不存在会创建该文件,但是不会创建目录
创建文件输出流的方法跟输入流一样
1、创建输出流对象
2、声明要写的数据
3、写出数据
4、关闭资源
OutputStream os = new FileOutputStream(“全路径文件名”);
FileOutputStream fos = new FileOutputStream(“全路径文件名”);
int num = 97
os.write(num)
os.close();
常用方法
os.write(num) 往该文件中写入一个字符
os.write(byte[],Index,length) 往该文件中写入一个byte数组,从Index索引开始,写入length的长度
五、Writer和Reader
(1)Writer
1、作用:
所有字符输出流的抽象父类
2、常用的已实现方法:
append(char c);//将指定字符写入缓冲区
writer(char[] cbuf);//将指定字符数组写入缓冲区
write(char[] cbuf, int off, int len)//将指定字符数组写入缓冲区,从off开始写入len长度
write(int c);//写入一个字符
write(String str);//将该字符串写入缓冲区
write(String str, int off, int len)//将指定字符串组写入缓冲区,从off开始写入len长度
(2)Reader
1、作用:
所有字符输入流的抽象父类
2、常用的已实现方法:
markSupported();//判断该文件是否支持标记,返回boolean,标记通常用于暂停下载
mark(int readAheadLimit);//标记流中当前位置
int num = read();//读一个字符,末尾返回-1
int length = read(char[] cbuf);//读取一个字符数组到cbuf中,返回读取到的长度,末尾返回-1
long l = skip(long n);跳过n个字符不读取,返回实际掉过的字符数
ready();//判断次流是否可以读
(3)OutputStreamWriter
1、描述:
这是一个字符输出流,是从字符流到字节流的桥接器。
2、常用构造器
OutputStreamWriter(OutputStream out)//一般放OutputStream的子类对象,常用字节输出流FileOutputStream
OutputStreamWriter(OutputStream out,String charsetName)//指定字符编码格式
3、常用方法:
write(int c);//写入一个字符
write(char[] cbuf, int off,int len);//写入一个字符数组,从off开始,写len长度
write(String str, int off,int len);//写入一个字符串,从off开始,写len长度
flush();//将缓冲区中的内容刷新到文件中
(4)OutputStreamWriter
1、描述:
这是一个字符输出流,是从字符流到字节流的桥接器。
2、常用构造器
OutputStreamWriter(OutputStream out)//一般放OutputStream的子类对象,常用字节输出流FileOutputStream
OutputStreamWriter(OutputStream out,String charsetName)//指定字符编码格式
3、常用方法:
write(int c);//写入一个字符
write(char[] cbuf, int off,int len);//写入一个字符数组,从off开始,写len长度
write(String str, int off,int len);//写入一个字符串,从off开始,写len长度
flush();//将缓冲区中的内容刷新到文件中
(5)BufferedWriter
1、描述:
将文本写入字符输出流,缓冲字符。即写入OutputStreamWriter中
2、构造器:
BufferWriter(Writer out);//一般放入缓冲桥接器 OutputStreamWriter
BufferWriter(Writer out, int size);//指定缓冲区大小
3、常用方法:
writer(char[] cbuf,int off,int len);//写一个字符数组,从off开始,写入len长度。
writer(int ch);//写入一个字符
writer(String s,int off,int len);//写一个字符串,从off开始,写入len长度
newLine();//写一个分隔符
flush();//刷新流
close();//流都要关闭
(6)BufferedReader
1、描述:
从字符输入流中读取文本,缓冲字符。
2、构造器:
BufferReader(Reader in);// 一般放入缓冲桥接器 InputStreamReader
BufferReader(Reader in,int sz);//指定缓冲区大小
3、常用方法:
markSupported();//是否支持mark标记
mark(int readAheadLimit);//标记流中的当前位置
read();//读取一个字符,返回int
int length = read(char[] cbuf,int off,int len);//将内容读入字符数组中,返回读取的长度
readLine();//读取一行
read();//判断此流是否可读,返回boolean