1.File类
1.概述
File类是文件操作类,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。
它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的。
2.File构造方法:
File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
例如:File f=new File(“c:\\itcast”);
File(String parent, String child):从父路径名字符串和子路径名字符串创建新的 File实例
例如:File f=new File(“c:\\itcast”,“itheima”); //c:\itcast\itheia
File(File parent, String child):从父抽象路径名和子路径名字符串创建新的 File实例
例如:File f=new File(“c:\\itcast”);
File f1=new File(f,“itheima”);//c:\itcast\itheima
package cn.itfenghua01;
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File f1 =new File("E:\\dev\\code");
System.out.println(f1);
File f2 = new File("E:\\Dev","code");
System.out.println(f2);
File f3 = new File("E:");
File f4 = new File(f3,"\\Dev\\code");
System.out.println(f4);
}
}
3.常用方法:
创建:
createNewFile():当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
mkdir():创建目录,当父目录不存在时,创建失败,不会报错,返回false
mkdirs():当父目录不存在时,连同父目录一起创建
package cn.itfenghua01;
import java.io.File;
import java.io.IOException;
public class FileDemo02 {
public static void main(String[] args) throws IOException {
File f1 = new File("D:\\IO\\java.txt");
//在目录下创建一个文本文件
System.out.println(f1.createNewFile());
File f2 = new File("D:\\IO\\javaSE");
//在目录下创建一个文件夹
System.out.println(f2.mkdir());
File f3 = new File("D:\\IO\\javaWEB\\javaEE\\java");
//创建多级目录
System.out.println(f3.mkdirs());
}
}
判断:
isDirectory():判断是否是目录
isFile():判断是否是文件
exists():判断File对象是否存在
获取:
getAbsolutePath():获取绝对路径
getPath():获取相对路径
getName():获取文件或者目录名称
list():获取文件和目录的名称字符串数组
listFiles():获取文件和目录的File对象数组
删除:
delete():删除文件或者目录
注意:当目录中包含子目录或者文件时不能删除
4、绝对路径和相对路径的区别
绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如:E:\itcast\java.txt
相对路径:必须使用取自其他路径名的信息进行解释。例如:myFile\java.txt
2 递归
递归指的是方法定义中调用方法本身的现象
递归必须注意:
1.找出递归规律
2.指定递归出口
package cn.itfenghua02;
import java.io.File;
public class DiGuiDemo {
public static void main(String[] args) {
File file = new File("D:\\IO");
getAllFilePath(file);
}
public static void getAllFilePath(File file) {
//获取所有的File的文件名
File[] arrfile = file.listFiles();
// for (File aa:arrfile){
// System.out.println(aa);
// }
//判断File数组是否为空
if (arrfile != null) {
for (File files : arrfile) {
//是目录则递归调用
if (files.isDirectory()) {
getAllFilePath(files);
//不是则获取绝对路径
} else {
System.out.println(files.getAbsolutePath());
}
}
}
}
}
3 IO流
1.IO:输入/输出(Input/Output)
2.流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输
3.流的分类:
1.按照流向分:
输入流:读取硬盘数据
输出流:写入硬盘数据
2.按照数据类型分:
字节流:数据传输单位是字节
字符流:数据传输单位是字符
4.字节输入输出流的超类
InputStream:这个抽象类是表示字节输入流的所有类的超类
OutputStream:这个抽象类是表示字节输出流的所有类的超类
注意:其子类的特点均是以其父类名作为子类名的后缀
5.FileOutputStream
1.构造方法
FileOutputStream(String name):创建文件输出流以指定的名称写入文件
注意:其中隐藏了一个new File(String name)操作
FileOutputStream(String name)和FileOutputStream(new File(String name))一样
FileOutputStream(String name,boolean append):当append为true时则字节将写入文件的末尾而不是开头 (向原有文档内容后追加)
2.写入数据的方法:
write(int b):将指定的字节写入此文件输出流 一次写一个字节数据
write(byte[] b):将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组数据
write(byte[] b, int off, int len):off指代b数组起始索引,len不能为负数,也不能大于len-off
3.不同操作系统换行符:
windows:\r\n
linux:\n
mac:\r
6.FileInputStream(String name):
1.通过打开与实际文件的连接来创建一个FileInputStream ,该文件由文件系统中的路径名name命名
2.读取数据的方法
read():一次读取一个字节,当返回值为-1时,表示文档所有字节读取结束
read(byte[] b):一次读取最多b.length个字节的数据,当返回值为-1时,表示文档读取结束