IO流
IO流:用来处理设备之间的数据传输,Java对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中。
分类:
1、按照数据流向
输入流:读入数据
输出流:写出数据
2、按照数据类型
字节流:可以读写任何类型的文件,比如:音频、视频、文本文件
字节输入流:InputStream 读
字节输出流:OutputStream 写
字符流:只能读写文本文件
字符输入流:Reader 读
字符输出流:Writer 写
IO流基类
1、字节流的抽象基类:
InputStream、OutputStream。
2、字符流的抽象基类:
Reader、Writer。
IO类层次图:
字节流
普通字节流:
FileOutputStream写出数据:
构造方法:
FileOutputStream(File file)
FileOutputStream(String name)
常用方法:
public void write(int b): 写一个字节 超过一个字节 砍掉前面的字节
public void write(byte[] b): 写一个字节数组
public void write(byte[] b,int off,int len): 写一个字节数组的一部分
public void close( ) 关闭该流,释放资源
数据追加写入:
//需要在包装的文件名后面加true
FileOutputStream fos = new FileOutputStream("a.txt" , true) ; // 完成追加写入
FileInputStream读取数据:
构造方法:
FileInputStream(File file)
FileInputStream(String name)
常用方法:
public int read() 读取一个字节的数据(如果没有数据返回的就是-1)
public int read(byte[] b) 读取指定数组中的字节
public int read(byte[] b, int off, int len) 读取指定数组中一部分字节
public void close( ) 关闭该流,释放资源
高效字节流:
BufferedOutputStream写出数据:
构造方法:
BufferedOutputStream(OutputStream out) 创建一个缓冲输出流
BufferedOutputStream(OutputStream out, int size) 创建一个指定缓冲区大小size的缓冲输出流
常用方法:
flush() 刷新缓冲输出流
write(byte[] b, int off, int len) 将指定数组中的一部分字节写入该缓冲输出流
write(int b) 将指定字节写入该缓冲输出流
public void close( ) 关闭该流,释放资源
BufferedInputStream读取数据:
构造方法:
BufferedInputStream(InputStream in) 创建一个缓冲输入流
BufferedInputStream(InputStream in, int size) 创建一个指定缓冲区大小size的缓冲输入流
常用方法:
public void read() 读取该缓冲输入流中的下一个字节
public void read(byte[] b, int off, int len)从缓冲输入流中读取指定数组中的一部分字节
public void close( ) 关闭该流,释放资源
程序小练习:
1、编写程序,获取指定目录下 所有的.java结尾的文件,打印出文件的绝对路径(包含 子文件夹中的.java文
package com.task.cn;
import java.io.File;
public class test {
public static void main(String[] args) {
//获取指定目录下 所有的.java结尾的文件, 打印出文件的绝对路径(包含 子文件夹中的.java文
File f1 = new File("D:\\DOOR");
dayin(f1);
}
private static void dayin(File f1) {
File[] files = f1.listFiles();
for (File f2 : files) {
if (f2.isDirectory()){
dayin(f2);
}else{
if (f2.getName().endsWith("java")){
System.out.println(f2.getAbsolutePath());
}
}
}
}
}
2、编写程序,删除 指定目录下的 所有文件与文件夹 (包含子文件夹)
package com.task.cn;
import java.io.File;
public class test1 {
public static void main(String[] args) {
File f1 = new File("C:\\mmm");
remove(f1);
}
private static void remove(File f1) {
File[] files = f1.listFiles();
for (File f2 : files) {
if (f2.isDirectory()) {
remove(f2);
} else {
f2.delete();
}
}
f1.delete();
}
}
3、复制MP3文件
public class test1 {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("D:\\蓝莲花.mp3");
FileOutputStream out = new FileOutputStream("C:\\蓝莲花.mp3");
byte[] bytes = new byte[1024 * 8];
int len = 0;
while ((len = in.read(bytes)) != -1) {
out.write(bytes, 0, len);
}
in.close();
out.close();
}
}