java基础 ---- 文件

  java基础 ---- 文件类

 

文件的理解概述:

  •  java把电脑中的文件和文件夹(目录)封装为了到java.io.File类中,可以使用File类的方法进行创建,删除,判断存在与否,获取文件,获取文件大小,遍历一个文件/文件夹。
  •  File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法
  • 绝对路径:是一个以盘符(c:,D:)开始的完整路径,如 C:\\Users\itcast\\IdeaProjects\\shungyuan\\123.txt;相对路径:是一个可以省略项目的根目录的简化路径,如 123.txt。

文件的使用概述:

  •  考虑到代码对不同操作系统的兼容性,路径不能写死:
     C:\develop\a\a.txt  windows
     C:/develop/a/a.txt  linux
     推荐: "C:"+File.separator+"develop"+File.separator+"a"+File.separator+"a.txt"
  • 路径是不区分大小写。
  • 构造方法新建的File对象不一定存在,若不存在需要调用createNewFile(),mkdir(),mkdirs()方法创建一个对应的文件或文件夹。
  •  delete方法是直接在硬盘删除文件/文件夹,不走回收站,删除要谨慎。

文件的测试代码:

package com.baishi.stage1.day10;

import java.io.File;
import java.io.IOException;

public class MyTest {
    public static void main(String[] args) throws IOException {
        show1();
        show2();
        show3();
        show4();
        show5();
        show6();
    }

    /**
     * show1():
     * 打印文件类的路径分隔符,名称分隔符
     */
    public static void show1() {
        String pathSeparator = File.pathSeparator;
        //Char pathSeparatorChar = File.pathSeparatorChar;
        // 
        System.out.println(pathSeparator);//路径分隔符 windows:分号;  linux:冒号:

        String separator = File.separator;
        //Char separatorChar = File.separatorChar;
        //
        System.out.println(separator);// 文件名称分隔符 windows:反斜杠\  linux:正斜杠/
    }

    /**
     * show2():File类构造方法创建File实例
     * 测试public File( String pathname):将给定的路径名字符串转换为抽象路径名来创建新的Fe实例
     */
    public static void show2() {
        //
        //为了和"\"作转义字符区分开来,编程时用"\\"
        File file = new File("C:\\hello.java");  
        //File file = new File("C:\\User\\Test");  路径也可以以文件夹结尾
        //File file = new File("hello.java");  路径也可以以相对路径结尾
        //File file = new File("E:\\hello.java");  E:\hello.java 路径也可以不存在,创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况
        System.out.println(file); //"C:\hello.java" 说明重写了Object类的toString方法
        /*public File( File parent, String child):从父抽象路径名和子路径名字符串创建新的File实例     
        //父路径和子路径,可以单独书写,使用灵活;父路径和子路径都可以变化
        * File file = new File("c:\\","hello.java");
        * System.out.println(file); //c:\hello.java
        */
        /*public File( String parent, String child):从父路径名字符串和子路径名字符串创建新的Fie实例
        //父路径是File类型,可以使用File的方法对路径进行一些操作,再使用路径创建对象
        File parent = new File("c:\\");
        File file = new File(parent,"hello.java");
        System.out.println(file);//  c:\hello.java
         */

    }

    /**
     * show3():File类获取功能的方法
     * 1.测试public long length()方法获取文件长度
     * 2.测试public String getName()方法返回File表示的文件或目录的名称
     * 3.测试public String getPath()方法获取路径名字字符串
     * 4.测试public String getAbsolutePath()方法返回此File的绝对路径名字符串
     */
    public static void show3() {
        //1.
        File f1 = new File("C:\\develop\\a\\1.jpg");
        long l1 = f1.length();
        System.out.println(l1);//780831字节
        //
        //如果构造方法中给出的路径不存在,那么length方法返回0
        File f2 = new File("C:\\User\\2.jpg");
        System.out.println(f2.length());//0
        //
        //文件夹是没有大小概念的,不能获取文件夹的大小
        File f3 = new File("C:\\User\\a");
        System.out.println(f3.length());//0 文件夹没有大小概念的
         
        //2.
        //getName()获取路径的结尾部分,可以是文件
        File f4 = new File("C:\\Users\\a.txt");
        String name4 = f4.getName();
        System.out.println(name4);//a.txt
        //
        //getName()获取路径的结尾部分,也可以是目录
        File f5 = new File("C:\\Users\\a");
        String name5 = f5.getName();
        System.out.println(name5);//a

        //3.
        /*
        toString方法调用的就是getPath方法
        源码:
            public String toString() {
                return getPath();
            }
        */
        File f6 = new File("C:\\Users\\a.txt");
        String path6 = f6.getPath();
        System.out.println(path6);
        //System.out.println(f6.toString());

        //4.
        // 无论路径是绝对的还是相对的,getAbsolutePath方法返回的都是绝对路径
            File f7 = new File("a.txt");
                String absolutePath7 = f7.getAbsolutePath();
                System.out.println(absolutePath7);//  C:\Users\a.txt
    }

    /**
     * show4():File类判断功能的方法
     * 测试调用 public boolean isDirectory()方法判断构造方法中给定的路径是否以文件夹结尾
     * 测试调用 public boolean isFile() 方法判断构造方法中给定的路径是否以文件结尾。
     * 测试调用 public boolean exists()方法判断File表示的文件或文件夹是否实际存在。
     */
    public static void show4() {
        File f1 = new File("C:\\Users\\a.txt");
        //
        //不存在,两种判断总是返回为false
        if(f1.exists()){//exists()方法可以判断绝路径,相对路径
            System.out.println(f1.isDirectory());//false
            System.out.println(f1.isFile());//true
        }
        //
        File f2 = new File("C:\\Users\\a");
        if(f2.exists()){
            System.out.println(f2.isDirectory());//true
            System.out.println(f2.isFile());//false
        }
    }

    /**show5():File类创建,删除功能的方法
     * 1.测试调用 public boolean createNewFile()方法当且仅当具有该名称的文件尚不存在时,创建一个新的空文件
     * 2.测试调用  public boolean mkdir() 创建由此File表示的目录。
     *   测试调用  public boolean mkdirs() 创建由此File表示的目录,包括任何必需但不存在的父目录
     * 3.测试调用  public boolean delete() 删除由此File表示的文件或目录
     */
    public static void show5() throws IOException {
            //1.
            //只能创建不存在的文件,已存在的不会创建
            File f1 = new File("08_FileAndRecursion\\2.txt");
            System.out.println(f1.createNewFile());
            //
            //不论文件字符形式如何,都会创建文件,不会创建文件夹
            File f2 = new File("08_FileAndRecursion\\新建文件夹");
            System.out.println(f2.createNewFile());
            //
            //路径不存在,会抛出IOException
            File f3 = new File("08_FileAndRecursi\\3.txt");
            System.out.println(f3.createNewFile()); //IOException

            //2.
            //文件夹不存在,创建单级文件夹,返回true;文件夹存在,不会创建,返回false;
            File f4 = new File("08_FileAndRecursion\\aaa");
            boolean b4 = f4.mkdir();
            System.out.println("b4:" + b4);
            //
            //构造方法中给出的路径不存在返回false,不会抛出异常,路径不存在,不会创建
            File f5 = new File("08_FileAndRecursion\\aaa");
            boolean b5 = f5.mkdir();
            System.out.println("b5:" + b5);
            //
            //mkdirs()既可以创建单级空文件夹,也可以创建多级文件夹
            File f6 = new File("08_FileAndRecursion\\111\\222\\333\\444");
            //File f6 = new File("08_FileAndRecursion\\111);
            //
            boolean b6 = f6.mkdirs();
            System.out.println("b6:" + b6);
            //
            //不论文件字符形式如何,都会创建文件夹,不会创建文件
            File f7 = new File("08_FileAndRecursion\\abc.txt");
            boolean b7 = f7.mkdirs();
            System.out.println("b7:" + b7);
            //
            //构造方法中给出的路径不存在返回false,不会抛出异常,路径不存在,不会创建
            File f8 = new File("08_F\\ccc");
            boolean b8 = f8.mkdirs();//不会抛出异常,路径不存在,不会创建
            System.out.println("b8:"+b8);
            
            //3.
            File f9 = new File("C:\\User\\新建文件夹");
            boolean b9 = f9.delete();//文件/文件夹删除成功,返回true;  文件夹中有内容,不会删除返回false;构造方法中路径不存在false
            System.out.println("b9:" + b9);
        }

    /**show6():File类比遍历功能的方法
     *1.测试调用public String[] list()方法,返回一个String数组,表示该File目录中的所有子文件或目录的名称
     *2.测试调用public File[] listFiles()方法,返回一个File数组,表示该File目录中的所有的子文件或目录对象
     */
    public static void show6() {
            File file = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\08_FileAndRecursion");
            //File file = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\08_FileAndRecursion\\1.txt");NullPointerException如果构造方法中给出的路径不是一个目录,也会抛出空指针异常
            //File file = new File("C:\\Users\\itcast\\IdeaProjects\\shungyuan\\08_Fi");NullPointerException如果构造方法中给出的目录的路径不存在,会抛出空指针异常
            String[] arr = file.list();
            for (String fileName : arr) {
                System.out.println(fileName);
            }
            File[] files = file.listFiles();
            //获取当前目录下的文件以及文件夹对象,只要拿到了文件对象,那么就可以获取更多信息
            //
            for (File f : files) {
                System.out.println(f);
                }
        }

    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值