为什么我们需要对文件进行操作

这是因为内存中存储的数据都是用来处理,修改,运算的,并不能永久保存(因为内存是断电后信息自动擦除)。
我们想永久的保存数据需要将数据存储在磁盘(断电后信息不会被擦除)之中,磁盘中数据的形式就是文件,文件是数据的载体,数据库中的数据就是以文件的形参存储在硬盘上的。

File类概述(操作文件,不能读取文件内容)

文件对象仅仅能够操作文件本身,不能读取文件的内容(附庸的附庸不是我的附庸),文件内容的读写交由I/O流
File类在java.io.File下,代表操作系统的文件对象(文件,文件夹)
File类提供了:定位文件,获取文件本身信息,删除文件,创建文件等功能

创建File对象

image.png

绝对路径:从盘符开始(例如D:开始)

  1. File fp= new File("C:\\Users\\86191\\Desktop\\jar\\阿萨德加快.txt");
  2. File fp= new File("C:/Users/86191/Desktop/jar/阿萨德加快.txt");
  3. 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的分隔符

相对路径(所谓相对就是相对到工程下)

相对路径一般是定位模块中的文件用的,所谓相对就是相对到工程下,也就是说文件的相对路径+工程的绝对路径=文件的绝对路径

  1. File fp= new File("模块名开始写其他和绝对路径一样");

文件夹对象

  1. File fp= new File("文件夹名");

这时候fp.length()=0;
文件夹默认大小0而不是计算文件夹中所有文件的大小

File常见API

判断文件类型、获取文件信息

image.png

  1. file.getAbsoluteFile();//拿绝对路径
  2. file.getPath();//拿文件定义时的路径 File file=new File("D:/.idea/aaa/ada");

创建文件、删除文件

image.png

  1. File file1=new File("E:\\javaproject\\code\\file\\.idea\\aaa\\sdasd\\adp.txt");//同样可以使用相对路径
  2. System.out.println(file1.mkdir());//只能创建一级目录,若是多级目录会创建失败
  3. System.out.println(file1.mkdirs());//一般用这个就可以了

image.png

  1. delete()删除文件,哪怕文件正在被使用也会被删除,而且不会走回收站
  2. delete()删除文件夹,只有文件夹为空时才能删除,不为空时不能被删除

    遍历文件夹(注意它只遍历当前目录下的一级文件夹)

    image.png

    1. File file=new File("D:");
    2. String[] filelist = file.list();
    3. for (String s : filelist) {
    4. System.out.println(s);
    5. }
    1. File file=new File("D:");
    2. File[] fileslist = file.listFiles();
    3. for (File file1 : fileslist) {
    4. System.out.println(file1.isFile());
    5. }

    image.png

    非规律化递归-文件搜索

    文件搜索:从根目录开始,搜索出某个文件的绝对路径
    1.先定位的应该是一级文件对象
    2.遍历全部的一级文件对象,判断是否是文件
    3.如果是文件,判断是否是我们的目标
    4.如果是文件夹,递归上诉步骤

    1. public static void seachfile(File name,String filename){
    2. if(name!=null&&name.isDirectory()){ //判断一级文件对象是否存在,已经它是否是文件夹
    3. File[] files=name.listFiles(); //获取文件夹下的所有文件对象名
    4. if(files!=null&&files.length!=0){//判断我们有没有获取到文件名以及这个文件夹是否是空
    5. for (File file : files) {//遍历所有我们获得的文件对象
    6. if(file.isFile()){//如果这个文件对象是文件,与我们想找的文件做比较
    7. if(file.getName().equals(filename)){
    8. System.out.println(file.getAbsoluteFile());
    9. Runtime r=Runtime.getRuntime();
    10. }
    11. }else{
    12. seachfile(file,filename);//如果这个文件对象是文件夹,重复上诉步骤
    13. }
    14. }
    15. }
    16. }
    17. }