IO模型与NIO基础

File类

File类主要是JAVA为文件这块的操作(如删除、新建等)而设计的相关类File类的包名是java.io,其实现了Serializable, Comparable两大接口以便于其对象可序列化和比较

创建一个文件/文件夹
删除文件/文件夹
获取文件/文件夹
判断文件/文件夹是否存在
对文件夹进行遍历
获取文件的大小

File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法
重点:记住这第三个单词

file------文件

directory------文件夹/目录

path------路径

绝对路径------------是一个完整的路径
以盘符( 比如C:)开始的路径
c:\a.txt
c:\demo\b.txt

相对路径------------是一个简化的路径
相对指的是相对于当前项目的根目录
如果使用当前项目的根目录,路径可以简化书写
D:\java\Java语言高级\File类\File类\File类的概述.avi-->简化为------File类的概述.avi(可以省略项目的根目录)

注意
路径是不区分大小写
路径中的文件名称分隔符widows使用反斜杠,反斜杠是转义字符,`两个反斜杠代表一个普通反斜杠。

File类的静态属性

static String pathSeparator------与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
static char pathSeparatorChar------与系统有关的路径分隔符。
windows下是分号,Linux下是冒号
static String Separator------与系统有关的默认名称分隔符,它被表示为一个字符串。
static char SeparatorChar------与系统有关的默认名称分隔符。
windows下是 \,Linux下是 /
java 复制代码
public class filetest {
    public static void main(String[] args) {
        System.out.println(File.pathSeparator);  //系统路径分隔符,win是分号,liunx是冒号
         System.out.println(File.separator);
    }
}

File类的构造方法

File(String pathname)------通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例。

参数

String pathname------------字符串的路径名称
路径可以是以文件结尾,也可以是以文件夹结尾(win中文件有扩展名就是文件平)。
路径可以是相对路径(以项目根目录),也可以是绝对路径。
路径可以是存在的,也可以是不存在的。
创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况。
java 复制代码
public class filetest {
    public static void main(String[] args) throws IOException {
         File file = new File("xiong.txt");
         file.createNewFile();   //只是文件名的话,文件创建放在项目的根目录下。
         
        File file2 = new File("xiong");
        file2.createNewFile();
        file2.mkdir();
    }
}


File(String parent, String child)------根据parent路径名字符串和child路径名字符串来创建一个新的File实例。

参数------------------------把路径分成了两部分
String parent------------父路径,该路径中的文件夹是已存的,不存在会报错
String child---------------子路径
好处
父路径和子路径可以单独书写,使用起来非常灵活;父路径和子路径都可以变化。
java 复制代码
public class filetest {
    public static void main(String[] args) throws IOException {
   

        File file = new File("C:\\abc\\","ccc.txt");
        file.createNewFile();
        System.out.println(file.getAbsolutePath());

    }
}

File(File parent, String child)------根据parent路径名字符串和child路径名字符串来创建一个新的File实例。

好处
父路径和子路径可以单独书写,使用起来非常灵活;父路径和子路径都可以变化。
父路径是File类型,可以使用File的方法对路径进行一些操作,在使用路径创建对象。
java 复制代码
       File fileparent = new File("c:\\abc");
        fileparent.mkdir();
        File file = new File(fileparent,"ccc.txt");
        file.createNewFile();
        System.out.println(file.getAbsolutePath());
        

File类中访问文件名相关的常用方法

public String getName()------------返回此File标识的文件或目录的名称。

public String getPath()------------将此File转换为路径名字符串。

public String getAbsolutePath()------------返回此File的绝对路径名字符串,返回的是绝对路径。

public String getParent()------------返回File对象所对应的目录(最后一级子目录)的父目录名称。

public boolean renameTo(File newName)------------重命名此File对象所对应的文件或目录,成返回true
File类检查文件的相关常用方法

public boolean exists()------------此File表示的文件或目录是否实际存在 。

public boolean isDirectory()------------此File表示的是否为目录 。

public boolean isFile()------------此File表示的是否为文件 。

public canWrite()------------此File是否可写

public canRead()------------此File是否可读

public isAbsolute()------------此判断创建File对象时是不是用的是绝对路径
获取文件常规信息的常用方法

public long lastModified()------------返回文件的最后修改时间。

public long length()------------返回文件内容的长度。

File类创建删除文件的常用方法

public boolean creatNewFile()------当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。

creatNewFile声明抛出了IOException,我们调用这个方法,就必须处理这个异常,要么throws,要么try catch

public boolean delete()------删除由此File表示的文件或目录。

此方法,可以删除构造方法路径中给出的文件/文件夹。注意delete方法直接在硬盘删除文件/文件夹,不走回收站,删除要谨慎。

public boolean mkdir()------创建由此File表示的目录。

创建单级空文件夹

public boolean mkdirs()------创建由此File表示的目录,包括任何必需但不存在的父目录。

既可以创建单级空文件夹,也可以创建多级文件夹

File类遍历(文件夹)目录功能

public String[ ] list( )------返回一个String数组,表示该File目录中的所有子文件或子目录。

public File[ ] listFiles( )------返回一个File数组,表示该File目录中的所有子文件或子目录。

注意

list方法和listFiles方法遍历的是构造方法中给出的目录。

如果构造方法中给出的目录的路径不存在,会抛出空指针异常。

如果构造方法中给出的路径不是一个目录,也会抛出空指针异常。

相关推荐
_Eden_3 天前
Netty初学六 客户端登录以及客户端与服务端收发消息
java·intellij-idea·nio
优人ovo7 天前
基于NIO建立长连接
nio
星如雨グッ!(๑•̀ㅂ•́)و✧9 天前
Java NIO全面详解
java·python·nio
熊文豪16 天前
【网络编程】Java高并发IO模型深度指南:BIO、NIO、AIO核心解析与实战选型
性能优化·高并发·nio·bio·aio·io模型·java网络编程
翻晒时光19 天前
探秘 Java IO 与 NIO:春招面试知识要点
java·面试·nio
我劝告了风*20 天前
NIO | 什么是Java中的NIO —— 结合业务场景理解 NIO (二)
java·nio
我劝告了风*20 天前
NIO | 什么是Java中的NIO —— 结合业务场景理解 NIO (一)
nio·i/o操作
李少兄21 天前
解决因JDK升级导致的`java.nio.file.NoSuchFileException`问题
java·python·nio
次元工程师!21 天前
JAVA-IO模型的理解(BIO、NIO)
java·笔记·学习·nio·bio·io模型
qq_3340602124 天前
IO模型与NIO基础二
nio