为什么我们需要对文件进行操作
这是因为内存中存储的数据都是用来处理,修改,运算的,并不能永久保存(因为内存是断电后信息自动擦除)。
我们想永久的保存数据需要将数据存储在磁盘(断电后信息不会被擦除)之中,磁盘中数据的形式就是文件,文件是数据的载体,数据库中的数据就是以文件的形参存储在硬盘上的。
File类概述(操作文件,不能读取文件内容)
文件对象仅仅能够操作文件本身,不能读取文件的内容(附庸的附庸不是我的附庸),文件内容的读写交由I/O流
File类在java.io.File下,代表操作系统的文件对象(文件,文件夹)
File类提供了:定位文件,获取文件本身信息,删除文件,创建文件等功能
创建File对象
绝对路径:从盘符开始(例如D:开始)
File fp= new File("C:\\Users\\86191\\Desktop\\jar\\阿萨德加快.txt");
File fp= new File("C:/Users/86191/Desktop/jar/阿萨德加快.txt");
File fp= new File("C:"+File.separator+"Users"+File.separator+"86191"+File.separator+"Desktop"+File.separator+"jar"+File.separator+"阿萨德加快.txt");
1.文件名的书写格式有两种如果是用\为了避免歧义要加上转义符\也就是\
2.也可以直接或使用/
3.也可以用java提供的分隔符File.separator,使用它的好处是当跨平台时,在Windows下会拿Windows的分隔符,在Linux下拿Linux的分隔符
相对路径(所谓相对就是相对到工程下)
相对路径一般是定位模块中的文件用的,所谓相对就是相对到工程下,也就是说文件的相对路径+工程的绝对路径=文件的绝对路径
File fp= new File("模块名开始写其他和绝对路径一样");
文件夹对象
File fp= new File("文件夹名");
这时候fp.length()=0;
文件夹默认大小0而不是计算文件夹中所有文件的大小
File常见API
判断文件类型、获取文件信息
file.getAbsoluteFile();//拿绝对路径
file.getPath();//拿文件定义时的路径 File file=new File("D:/.idea/aaa/ada");
创建文件、删除文件
File file1=new File("E:\\javaproject\\code\\file\\.idea\\aaa\\sdasd\\adp.txt");//同样可以使用相对路径
System.out.println(file1.mkdir());//只能创建一级目录,若是多级目录会创建失败
System.out.println(file1.mkdirs());//一般用这个就可以了
- delete()删除文件,哪怕文件正在被使用也会被删除,而且不会走回收站
delete()删除文件夹,只有文件夹为空时才能删除,不为空时不能被删除
遍历文件夹(注意它只遍历当前目录下的一级文件夹)
File file=new File("D:");
String[] filelist = file.list();
for (String s : filelist) {
System.out.println(s);
}
File file=new File("D:");
File[] fileslist = file.listFiles();
for (File file1 : fileslist) {
System.out.println(file1.isFile());
}
非规律化递归-文件搜索
文件搜索:从根目录开始,搜索出某个文件的绝对路径
1.先定位的应该是一级文件对象
2.遍历全部的一级文件对象,判断是否是文件
3.如果是文件,判断是否是我们的目标
4.如果是文件夹,递归上诉步骤public static void seachfile(File name,String filename){
if(name!=null&&name.isDirectory()){ //判断一级文件对象是否存在,已经它是否是文件夹
File[] files=name.listFiles(); //获取文件夹下的所有文件对象名
if(files!=null&&files.length!=0){//判断我们有没有获取到文件名以及这个文件夹是否是空
for (File file : files) {//遍历所有我们获得的文件对象
if(file.isFile()){//如果这个文件对象是文件,与我们想找的文件做比较
if(file.getName().equals(filename)){
System.out.println(file.getAbsoluteFile());
Runtime r=Runtime.getRuntime();
}
}else{
seachfile(file,filename);//如果这个文件对象是文件夹,重复上诉步骤
}
}
}
}
}