java File类使用

目录

一、File类

1、File的三种构造方法

2、File类创建文件和目录的方法

3、File类的判断和获取功能

4、File类的删除功能

5、File遍历目录

 二、IO流

1、字节流

2、写入文件案例


一、File类

1、File的三种构造方法

package com.wxl.springbootpro01;


import org.junit.jupiter.api.Test;

import java.io.File;

public class MyTest {
    @Test
    public void test(){
        //File类的三种构造方法
        File f1=new File("E:\\java\\java.txt");
        System.out.println(f1);

        File f2=new File("E:\\java","java.txt");
        System.out.println(f2);

        File f3=new File("E:\\java");
        File f4=new File(f3,"java.txt");
        System.out.println(f4);
    }
}

效果:可以看到File里存的只是路径,路径并不一定真的存在对应的文件。

2、File类创建文件和目录的方法

方法用途
file.createNewFile()用于创建文件,不能创建目录。当文件或目录同名的存在时,该方法都不会再创建。
file.mkdir()用于创建单个目录。
file.mkdirs()可用于创建多层级的目录。

这些方法都是在创建成功时返回true,文件或目录存在时不创建返回false。

3、File类的判断和获取功能

方法描述
isDirectory()测试此抽象路径名表示的File是否为目录
isFile()测试此抽象路径名表示的File是否为文件
exists()测试此抽象路径名表示的File是否存在
getAbsolutePath()返回此抽象路径名的绝对路径名字字符串
getPath()将此抽象路径名转换为路径名字符串
getName()返回由此抽象路径名表示的文件或目录的名称
list()返回此抽象路径名表示的目录中的文件和目录的名字字符串数组
listFiles()返回此抽象路径名表示的目录中的文件和目录的File对象数组

4、File类的删除功能

delete()可以删除文件或目录,如果要删除的目录下有文件则会删除失败,必须先删除目录下的内容再删除目录。

5、File遍历目录

package com.wxl.springbootpro01;


import org.junit.jupiter.api.Test;

import java.io.File;

public class MyTest {
    @Test
    public void test(){
        File srcFile=new File("D:\\DataQuery");

        getAllFilePath(srcFile);
    }

    public void getAllFilePath(File srcFile){
        //获取File目录下的所有文件或者目录的File数组
        File[] fileArray=srcFile.listFiles();
        //遍历File数组,得到没有个File对象
        if(fileArray!=null){
            for(File file:fileArray){
                //判断File对象是否为目录
                if(file.isDirectory()){
                    //是,递归调用
                    getAllFilePath(file);
                }else{
                    //不是,获取绝对路径输出控制台
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }
}

运行结果:目录下所有文件名获取到

 二、IO流

1、字节流

文件读写时使用字节流能避免很多不必要的麻烦,字符串转换为字节类型可以使用.getBytes()方法。

字节流抽象基类

inputStream:所有输入类的超类

outputStream: 所有输出类的超类

FileOutputStream使用案例:

package com.wxl.springbootpro01;


import org.junit.jupiter.api.Test;

import java.io.FileOutputStream;
import java.io.IOException;

public class MyTest {
    @Test
    public void test() throws IOException {
        //创建字节输出流对象
        FileOutputStream fos=new FileOutputStream("test.txt",true);//true表示追加写入
        /*
        做了三件事情:
        A.调用系统功能创建了文件
        B.创建了字节输出流对象
        C.让字体输出流对象指定创建好的文件
         */
        fos.write(97);

        //最后一定要释放资源
        fos.close();
    }

}

效果:创建了该文件,并写入了数据。 

 

FileInputStream使用案例:

package com.wxl.springbootpro01;

import org.junit.jupiter.api.Test;
import java.io.FileInputStream;
import java.io.IOException;

public class MyTest {
    @Test
    public void test() throws IOException {
        //创建字节输入流对象
        FileInputStream fis = new FileInputStream("test.txt");

        int by = -1;
        while ((by=fis.read())!= -1) {//没读取到文件时返回-1
            System.out.print((char) by);
        }

        //最后一定要释放资源
        fis.close();
    }

}

效果:可以看到文件已被读取,不过编码格式不对造成乱码。

2、写入文件案例

package com.yiibai;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class WriteToFile2 {
    public static void main(String[] args) {
        try {
            String content = "Yiibai.com is one the best site in the world";
            File file = new File("outfile2.txt");
            if (!file.exists()) {
                file.createNewFile();
            }
            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(content);
            bw.close();

            System.out.println("All Job Done!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值