一.File类
常用方法
2.遍历目录下的文件
public static void main (String[] args) throws Exception{
File flie = new File ("D:/IdeaWorkspace/chapter07");
if(file.isDirectory()){ //判断File对象对应的目录是否存在
String[] names = file.list(); //获取目录下的所有文件的文件名
for(String name : names){
System.out.println(name); //输出文件名
}
}
}
删除文件及目录 在输出后加一个delete
二.字节流
字节流的概念
在计算机中,无论是文本、图片、音频还是视频,所有文件都是以二进制(字节)形式存在的,I/O流中针对字节的输入/输出提供了一系列的流,统称为字节流。字节流是程序中最常用的流,根据数据的传输方向可将其分为字节输入流和字节输出流。在JDK中,提供了两个抽象类InputStream和OutputStream,它们是字节流的顶级父类,所有的字节输入流都继承自InputStream,所有的字节输出流都继承自OutputStream。
InputStream
OutputStream
1.文件的复制
四个步骤:
public static void main(String[] args) throws Exception{
//创建一个字节流输入流,用于读取当前目录下source文件夹中的文件
InputStream in = new FileInputStream ("source/五环之歌.doc");
//创建一个文件字节输出流,用于将读取的数据写入target目录下的文件中
OutputStream in = new FileOutputStream ("target/五环之歌.doc");
int len; //记住每次读取的一个字节
//获取复制文件前的系统时间
leng begintime = System.courrenTimeMillis();
while((len = in.read())!=-1){//读取每个字节是否到文件末尾
out.write(len);//将读取的字节写入文件
}
//获取文件复制结尾系统时间
long endtime = System.courrenTimeMillis();
System.out.println("复制文件所消耗的时间是:"+(endtime - begintime)+"毫秒");
in.close();
out.close();
}
三.字符流
当使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。
字符输入流Reader
java.io.Reader抽象类是标识用于读取字符流的所有类的超类,可以读取字符信息到内存中。它定义了字符输入流的基本共性功能方法。
FileReader
构造方法的作用:
1.创建一个FileReader对象
2.会把FileReader对象指向要读取的文件
字符输入流的使用步骤:
1.创建FileReader对象,构造方法中绑定要读取的数据源;
2.使用FileReader对象中的方法read读取文件;
3.释放资源。
字符输出流Writer
java.io.Writer抽象类时标识用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。它定义了字节输出流的基本共性功能方法。
FileWriter
1.创建一个FileWriter对象;
2.会根据构造方法中传递的文件/文件路径,创建文件;
3.会把FileWriter对象指向创建好的文件。
字符输出流的使用步骤:
1.创建一个FileWriter对象;
2.构造方法中绑定要写入数据的目的地;
3.使用FileWriter对象中的方法writer,把数据据写入到内存缓冲区(字符转换为字节的过程)中;
4.使用FileWriter对象中的方法flush,把内存缓冲区中的数据,刷新到文件中;
4.释放资源(会把内存缓冲区中的数据刷新到文件中,故flush可不写)