(3)JavaSE:(3)文本操作——File/RandomAccessFile(上)


一、构建File对象

在这里插入图片描述

1.File(String Pathname)

File的每一个实例可以表示硬盘上的一个文件或目录(实际上表示的是一个抽象路径)
在这里插入图片描述

代码如下(示例):
在这里插入图片描述

2.File(File parent,String child)

代码如下(示例):
在这里插入图片描述

3.File isFile()方法

该方法是判断File是否是一个文件,返回值是boolean类型
代码如下(示例):
在这里插入图片描述

4.File 的length()方法

需要注意的是File的length方法返回值是一个long类型的数字,文件的字节量很大很大
在这里插入图片描述
代码如下(示例):
在这里插入图片描述

5.File 的delete()和exists()方法

要想删除一个文件,那么首先先判断一下该文件是否在目录中,exists方法返回的是一个boolean类型的值
在这里插入图片描述

代码如下(示例):
在这里插入图片描述

6.File 的createNewFile()和exists()方法

代码如下(示例):
在这里插入图片描述

7.File 的isDiractory()和ListFiles()方法

在这里插入图片描述
代码如下(示例):

package file;
import java.io.File;
/**
 * 访问一个目录中的子项
 */
public class ListFilesDemo {
    public static void main(String[] args) {
        //获取当前目录中的所有内容
        File dir = new File(".");
        /*
            boolean isFile()
            判断当前file表示的是否是一个文件

            boolean isDirectory()
            判断当前File是否表示的是一个文档
         */
        if(dir.isDirectory()){
            File[] subs = dir.listFiles();
            System.out.println(subs.length);
            for(int i=0;i<subs.length;i++){
                System.out.println(subs[i].getName());
            }
        }
    }
}

8.File 的mkdir()和mkdirs()方法

在这里插入图片描述

在这里插入图片描述
代码如下(示例):

package file;

import java.io.File;

/**
 * 创建一个目录
 */

public class MkDirDemo {
    public static void main(String[] args) {
        //当前目录下创建一个目录:demo
//        File dir = new File("demo");
        //当前目录下新建目录:./a/b/c/d/e/f
       File dir = new File("a/b/c/d/e/f");
        if(dir.exists()){
            System.out.println("该目录已存在");
        }else{
            dir.mkdirs();//创建多级目录
//          dir.mkdir();//创建单个目录
            System.out.println("目录已创建");
        }
    }
}
package file;

import java.io.File;

/**
 * 删除一个目录
 */
public class DeleteDirDemo {
    public static void main(String[] args) {
        //将当前目录下的demo目录删除
        File dir = new File("demo");
        if (dir.exists()) {
            dir.delete();//删除多级目录时里面都是空的才能删除
            System.out.println("该目录已删除");
        }else{
            System.out.println("该目录不存在");
        }

    }
}

9.File 的文件过滤器

代码如下(示例):

package file;

import java.io.File;
import java.io.FileFilter;

/**
 * 重载的ListFiles方法,允许我们传入一个文件过滤器FileFilter,然后将满足过滤器要求
 * 的子项获取回来
 *
 */
public class ListFileDemo2 {
    public static void main(String[] args) {
        //获取当前目录中所有名字含有"s"的子项
        File dir = new File(".");
        if(dir.isDirectory()){
            MyFilter filter = new MyFilter();

            /*
                重载的listFiles方法内部会使用给定的过滤器,将目录中所有子项都传入给过滤
                器的方法accept,并将返回值为true的子项最终返回
             */

            File[] subs = dir.listFiles(filter);
            System.out.println(subs.length);
            for(int i=0;i<subs.length;i++){
                System.out.println(subs[i].getName());
            }
        }
    }
}

class MyFilter implements FileFilter{
    public boolean accept(File file) {
        String fileName = file.getName();
//        int index = fileName.indexOf("s");
//        return index !=-1;
        //String 的contains方法是判断字符串是否包含给定的内容
        return fileName.contains("s");
    }
}

第二种写法

package file;

import java.io.File;
import java.io.FileFilter;

/**
 * 使用匿名内部类的形式创建文件过滤器
 *
 */
public class ListFilesDemo3 {
    public static void main(String[] args) {
        //获取当前目录中所有名字里含有"s"的子项
        File dir = new File(".");
        if(dir.isDirectory()){

            File[] subs = dir.listFiles(new FileFilter( ){
                public boolean accept(File file) {
                    return file.getName().contains("s");
                }
            });
            System.out.println(subs.length);
            for(int i=0;i<subs.length;i++){
                System.out.println(subs[i].getName());
            }
        }
    }
}

10.Filede文件过滤器的lambda写法

lambda表达式 JDK8之后推出的一个新特性

  • 使用lambda的直观感受是可以用更精简的语法创建内部类

  • 语法

  • (参数列表)->{

  • 方法体

  • }

  • lambda表达式实现的接口不需要写接口的名字以及方法的名字。

  • 但是要求该接口只能有一个抽象方法

代码如下(示例):

 package lambda;

import java.io.File;
import java.io.FileFilter;

/**
 *lambda表达式 JDK8之后推出的一个新特性
 * 使用lambda的直观感受是可以用更精简的语法创建内部类
 *
 * 语法
 * (参数列表)->{
 *     方法体
 * }
 * lambda表达式实现的接口不需要写接口的名字以及方法的名字。
 * 但是要求该接口只能有一个抽象方法
 *
 */

public class LambdaDemo1 {
    public static void main(String[] args) {
        //获取当前目录中含有"s"的子项
        File dir = new File(".");
        if(dir.isDirectory()){
//            FileFilter filter = (f)->{
//                return f.getName().contains("s");
//            };
            FileFilter filter =(f)->f.getName().contains("s");

            File[] subs = dir.listFiles(filter);
            System.out.println(subs.length);
            for(int i=0;i<subs.length;i++){
                System.out.println(subs[i].getName());

            }
        }
    }
}

二、RandomAccessFile(上)

在这里插入图片描述
在这里插入图片描述

1.只读模式

代码如下(示例):
在这里插入图片描述

2.读写模式

在这里插入图片描述

3.字节数据读写操作

3.1)write(int d)方法
在这里插入图片描述
代码展示如下:
在这里插入图片描述

3.2)read()方法

在这里插入图片描述
返回值的范围为0~255之间,(即低八位11111111),如果返回值为-1,说明已经读取到文件末尾了

代码展示如下:
在这里插入图片描述
3.3)write(byte[] d)方法
在这里插入图片描述
在这里插入图片描述

代码展示如下:
在这里插入图片描述
3.4)read(byte[] d)方法
在这里插入图片描述
代码展示如下:
在这里插入图片描述

代码展示如下:
在这里插入图片描述
3.5)close()方法
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值