javaIO基础操作(File文件操作),有详细代码哦!!!


我们现在谈的IO都是阻塞式的IO,也称为BIO,也被称为传统IO
我们在学习IO的过程中,了解到的都是包和类,所以想要学好IO,必须清楚抽象类;在IO操作的部分还要重点掌握两个代码模型。掌握IO的组成的核心的五个类和一个接口。
A:核心的五个类(File、Outputstream、InputStream、Reader、Writer)
B:一个接口(Serializable)

File文件操作类

1.1File类使用

java.io包中,File类是唯一一个与文件本身操作(创建、删除、取得信息)有关的程序类
与文件内容无关,操作的是文件本身。
1.1、File类的基本使用
java.io.File类是一个普通的类,直接产生实例化对象即可。如果要实例化对象则需要用到两个构造方法:

//File的两种实例化方式:
//用的最多,直接传入,直接获取
public File(String pathname)
public File(String parent,String child)//设置父路径和子路径
//文件还可以通过网络获取
public File(URI uri)

如果要想进行文件的基本操作,可以使用的File类的如下方法:

//创建新文件:
public boolean createNewFile() throws IOException

我们在进行我们的创建文件时要想清楚,在统一文件路径中,如果我们想创建的文件已经存在还能不能创建,很明显是不能再次进行创建的,所以,我们的在创建文件时,要先判断我们的文件是否已经存在,再进行创建。

//判断文件是否存在
public boolean exists()
//删除文件
public boolean delete()

我们在进行我们的文件创建时,就要开始想,在实际的开发中,我们的代码可能运行在我们的windows系统下,也有极大的可能跑在我们的Unix系统下,我们的windows操作系统下的分盘符是"",但是我们的Unix系统的分盘符是"/"。为了解决这两个问题,我们在使用路径分割符的时候,都会采用一个常量

public static vinal String separator

来描述。
好了,我们在想清楚了以上两个问题之后,我们现在来实现我们的代码,我们要实现一个小程序,在文件存在的情况下我们的删除它,在文件不存在的情况下我们创建它。
好了,不要嘲笑这个程序,虽然感觉它是如此的弱智和如此的无聊,但是我们也要对它表示我们的感激,毕竟它为我们理解文件操作也算是做了一点贡献。

import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystem;

/*
* 我们的文件创建程序
* 当我们的文件不存在时我们进行创建
* 当我们的文件存在时,我们进行删除
* */
public class CreateTest {
    public static void main(String[] args) {
        File file=new File("C:"+File.separator+"Users"+File.separator+"白乐荣"
                +File.separator+"Desktop"+ File.separator +"Test.txt");
        if(file.exists()){
            file.delete();
        }else{
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

这是我们就会发现我们的桌面上为我们创建好了一个名为“Test.txt”的文件。宝宝们记得自己去试一试哦。

1.2目录操作

在File类中关于目录有如下方法:

取得父路径或父File对象
public String getParent()
public File getParentFile()

若想创建父路径,此时最好取得父路径的File类对象
创建目录方法:无论有多少级父目录,都会一次性创建

public boolean mkdirs()

我们的IO里面的异常都属于受查异常,都需要处理

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

public class mkdirsTest {
    public static void main(String[] args) {
        File file=new File("C:"+File.separator+"Users"+File.separator+"白乐荣"+File.separator+
            "Desktop"+File.separator+"lele"+File.separator+"www"+File.separator+"Test.txt");
        if(!file.getParentFile().exists()){//创建父路径
            //有多少级父目录就创建多少级
            file.getParentFile().mkdirs();
        }
        if(file.exists()){
            file.delete();
        }else{
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}

运行完该程序我们的桌面上就成功创建了一个lele文件夹,里面还有一个www的文件夹,在这个文件夹里面有叫做Test.txt的文件。

1.3取得文件信息

在File类里面提供了一系列的取得文件信息的操作。

判断File对象是否是文件:public boolean isFile()
判断File对象是否是路径:public boolean isDirectory()
取得文件的大小:public long length()
取得最后修改日期:public long lastModified()

以上的操作都是针对文件进行信息取得,Java里也提供有如下方法列出一个目录的全部组成:

列举一个目录的全部组成:public File[] listFiles()

下面的代码是我们完成的一个小项目,主要是完成我们的列出目录里面所有级的信息,采用递归模式来完成。嘻嘻。
我们在完成的时候将我么的文件遍历输出放在了我们的子线程中,我们的IO输出操纵是我们的阻塞式操作,我们为了主线程能够继续自己干自己的事情,我们将我们的实现代码放在我们的子线程中。

import java.io.File;

public class listFileTest {
    public static void main(String[] args) {
        new Thread(()->{
            File file=new File("C:\\Users\\白乐荣\\Desktop");
            listAllFiles(file);//从此处开始递归
        },"输出线程").start();
        System.out.println("开始进行文件输出。。。");
    }
//列出指定目录中的全部子目录信息
    private static void listAllFiles(File file) {
        if(file.isDirectory()) {//判定现在给定的file属于目录对象
            File[] result = file.listFiles();
            if (result != null) {
                for (File file2 : result) {
                    listAllFiles(file2);
                }
            }
        }else{
                System.out.println(file);
            }
        //上面的if判断完成为文件的路径
        //else为输出文件名
        }
    }


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值