File类

产生File类的对象

File 类的对象是一个“文件或目录”的抽象,它并不打开文件或目录,而是指定要操作的文件或目录。File 类的对象一旦创建,就不能再修改。要创建一个新的 File 对象,需要使用它的构造方法,一般我们使用如下三种构造方法创建 File 类对象。

// 如何创建File类的对象---构造器
		//代表是一个文件
		//文件整体路径
        File file1 = new File("D:\\a\\a\\a.txt");
		//文件路径  文件名
        File file2 = new File("D:\\a\\a", "a.txt");
        File file3 = new File("D:\\a\\a", "b.txt");
        //代表一个文件夹
        File file4 = new File("D:\\a\\b");
        File file5 = new File("D:\\a", "b");

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EMhEk0zX-1680089094110)(C:\Users\27310\AppData\Roaming\Typora\typora-user-images\image-20230326114915317.png)]

File类常用方法

文件的创建和删除
//File类的常用方法,文件的创建和删除
    private static void a() throws IOException {
        File file2 = new File("D:\\a\\a\\b.txt");
        //判断文件是否存在
        boolean exits = file2.exists();

        if (!exits) {
            //如果不存在 创建  存在的时候不会再创建
            file2.createNewFile();
        } else {
            //如果存在就删除
            file2.deleteOnExit();
            //如果不存在会显示异常
//            file2.delete();
        }
    }
文件夹的创建和删除
//File类常用方法 文件夹的创建和删除、
    private static void b() {
        File file3 = new File("D:\\a\\c\\b");
        //是否存在
        boolean exits = file3.exists();
        System.out.println("是否存在" + exits);
        //是否是目录
        boolean idDirectory = file3.isDirectory();
        System.out.println("是否是目录" + idDirectory);
        //是否是文件
        boolean isFile = file3.isFile();
        System.out.println("是否是文件" + isFile);
        if (!exits) {
            //创建目录 必须有上级目录
//            boolean mkdir = file3.mkdir();
//            System.out.println("是否创建成功" + mkdir);
            //创建目录  可以没有上级目录    如果父目录不存在 创建父目录
            boolean mkdirs = file3.mkdirs();
            System.out.println("是否创建成功" + mkdirs);

//            boolean
        } else {
            boolean delete = file3.delete();
            System.out.println("是否删除成功" + delete);
        }

    }
获得当前信息或者父级目录
//    File常用方法获取当前信息或者父目录
private static void b() {
    File file1 = new File("D:\\a\\a\\a.txt");
    // 获取文件或者目录名称
    String name = file1.getName();
    //获取父目录完整名称 抽象路径名的名字
    String pathName = file1.getParent();
    //获取父目录 抽象路径名
    File file = file1.getParentFile();
    //获取文件绝对路径
    String string = file1.getAbsolutePath();
    System.out.println("文件名称" + name);
    System.out.println("父目录完整名称+" + pathName);
    System.out.println("父目录的抽象路径" + file);
    System.out.println("文件绝对路径" + string);
}

RandomAccessFile 类

构造方法

  • RandomAccessFile(File file, String mode)
  • RandomAccessFile(String name, String mode)

mode值的含义 r(Read) w(Write)

r: 以只读的方式打开 如果试图执行写入方法 会抛出IOException异常

rw: 以读写方式打开文件 如果不存在会自动创建文件 (使用最多)

rws : 以读写方式打开文件 相较于“rw”模式,还需要对文件的内容或元数据的每个更新都同步写入到底层存储设备。

rwd: 以读、写方式打开指定文件,相较于“rw”模式,还要求对文件内容的每个更新都同步写入到底层存储设备。

RandomAccessFile类的输入输出操作

输出操作 (写入文件操作)
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");

//写入操作    注意会覆盖掉原有位置上的内容  按照索引会覆盖掉从索引3开始的内容
//定义插队位置    randomAccessFile.seek() 定义指针位置

randomAccessFile.seek(3);
String str = "hello";
randomAccessFile.write(str.getBytes());

randomAccessFile.close();
输入操作 (输出文件内容操作)
//读取操作
        randomAccessFile.seek(4);
        //读取一个字符
//        randomAccessFile.read();
        //读取自定义字符数
        byte[] bytes = new byte[10];
        //将读取到的内容写入到bytes数组中
//        int len = randomAccessFile.read(bytes);
        //len是实际读取的内容数
//        String string = new String(bytes, 0, len);

        //读取一行
        String line = randomAccessFile.readLine();
//        System.out.println(string);
        System.out.println(line);
        randomAccessFile.close();

line = randomAccessFile.readLine();
// System.out.println(string);
System.out.println(line);
randomAccessFile.close();