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方法遍历的是构造方法中给出的目录。

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

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

相关推荐
静心观复1 天前
Java NIO、AIO分析
java·开发语言·nio
静心观复1 天前
java IO 与 BIO、NIO、AIO
java·nio
程序员小杰@1 天前
Java的 BIO、NIO、AIO?分别的作用和用法
java·python·nio
w3625012664 天前
Java NIO
java·开发语言·nio
诸葛小猿8 天前
java的bio、nio、aio 以及操作系统的select、poll、epoll
select·nio·epoll·poll·aio
缘友一世10 天前
java实现网络IO高并发编程java NIO
java·网络·nio
中國移动丶移不动10 天前
输入输出(I/O):熟悉 Java 的 I/O 类库,尤其是 NIO 和文件操作
java·后端·nio
自律的kkk22 天前
网络编程中的黏包和半包问题
java·开发语言·网络·网络编程·tcp·nio
power-辰南23 天前
Netty 常见面试题原理解析
java·开发语言·netty·nio