51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

JavaIO的整体结构以及File类的使用

# 一、概述 {#一、概述}

IO即输入输出系统,java的IO总体可以分为字符流(Reader、Writer)和字节流(InputStream、OutputStream)。

字节流直接对二进制数据进行操作;字符流在操作的时候使用了缓冲区(即内存)。

字节流一般用来对媒体文件操作,比如图片;字符流一般可用来操作文本文件,如txt文件。

掌握javaIO需要掌握一个类(File)、一个接口(Serializable)和四个抽象类(Reader、Writer、InputStream、OutputStream)

# 二、JavaIO的整体结构 {#二、javaio的整体结构}

# 三、File类 {#三、file类}

File类是在整个java.io包中里面唯一一个与文件本身有关的操作类,通过查看官方文档Java PlatForm SE 8,可以看到File类一共提供了四种构造方法:

File(File parent, String child) 
File(String pathname)  
File(String parent, String child)  
File(URI uri) 

上面四种构造方法包含了所有可能出现的路径格式

# 3.1、FIle类对文件的主要操作: {#_3-1、file类对文件的主要操作}

File类对文件的主要操作是以下几个:

boolean createNewFile()  创建文件
boolean delete()  删除文件
boolean exists()  判断文件是否存在

通过代码简单尝试:

public static void main(String[] args) throws IOException {
    File file=new File("F://testFile.txt");
    if (file.exists()){
        file.delete();
    }else {
        file.createNewFile();
    }
}

注意两个问题:

1.删除和新建文件是存在延迟的,并非事实。

2.不同的操作系统之间路径分隔符不同,因此可以使用File.separator代替分隔符

File file=new File("F:"+File.separator+"testFile.txt");

# 3.2、File类对目录的主要操作 {#_3-2、file类对目录的主要操作}

boolean mkdir() 创建单级目录
boolean mkdirs() 创建多级目录  
String getParent() 以String方式获取父目录
File getParentFile()  以File方式获取父目录

当我们需要创建一个包含多级目录的文件时,就可以使用上述的方法

public static void main(String[] args) throws IOException {
    File file=new File("F:"+File.separator+"二级目录"+File.separator+"testFile.txt");
    if (!file.getParentFile().exists()){
        file.getParentFile().mkdirs();
    }
    file.createNewFile();
}

# 3.3、对文件信息的操作 {#_3-3、对文件信息的操作}

File类提供了许多对文件信息的操作:

boolean canExecute() 判断文件是否可执行
boolean canRead()  判断文件是否可读
boolean canWrite()  判断文件是否可写
String getAbsolutePath()  获取文件绝对路径
String getName() 获取文件或目录的名称
boolean isDirectory() 判断是否是目录
boolean isFile()  判断是否是文件
long lastModified()  最后修改时间
long length()   文件的大小

# 3.4、获取文件目录信息 {#_3-4、获取文件目录信息}

String[] list()  返回所有子目录的信息
File[] listFiles()  返回完整的路径信息

通过代码和结果展示:

public static void main(String[] args) throws IOException {
    File file=new File("F:"+File.separator);
    System.out.println(Arrays.toString(file.list()));
    System.out.println(Arrays.toString(file.listFiles()));
}

通过递归的方式,我们可以找到某个路径下的所有完整地址

public static void main(String[] args) throws IOException {
    File file=new File("F:"+File.separator);
    listDIR(file);
}
public static void listDIR(File file){
    if (file.isDirectory()){
        File[] result=file.listFiles();
        if (result!=null){
            for (int i = 0; i < result.length; i++) {
                listDIR(result[i]);
            }
        }
        System.out.println(file);
    }
}

# 四、结论 {#四、结论}

File类的操作只针对于文件的信息,无法对文件中的内容进行操作,而想要操作文件的内容就需要使用字节流和字符流.

赞(5)
未经允许不得转载:工具盒子 » JavaIO的整体结构以及File类的使用