Java的输入/输出——File类

流:是一种有序的数据的结合,有数据源和数据目的地
主要分为三种:

  1. 按照流的方向:输入流(只能读取,不能输入),输出流(只能写入,不能读取)
  2. 按照流的操作单元:字节流(计算机识别的这种,011110101)、字符流(人能认识的,字符串)
    这里写图片描述 3. 按照角色:节点流,处理流

字节 字符的区别:
1.读写的单位不同:字节流是以字节为单位,一个字节占8个bit位
2.操作对象不一样:字节流可以处理任何类型的数据 字符流只能处理相关的数据类型

字节字符的转换:引入了字符编码表,建立字符和字节的映射关系
(ASCII)借助于一个字节储存数据,一个字节的7个bit位
(GBK) 借助两个字节储存,处理中文的
(utf-8)对Unicode(两个字节)的优化,一个字节(但它还有一个字节头,所以实际大于一个字节)

文件类:File类

java.io.File类不属于Java流系统,但它是文件流进行文件操作的辅助类,主要用于操作文件及文件目录,包括删除、重命名文件或目录、查询文件的属性、创建子目录、列出目录下的文件等:
这里写图片描述

这里写图片描述

输出目录中的所有文件:

public class AQ {

    public static void main(String[] args) {
        File file = new File("D:\\src/java");
        print1(file);
    }

    public static void print1(File file) {
        String[] list = file.list();
        for(int i = 0;i < list.length;i++) {
            System.out.println(list[i]);
        }
        System.out.println("--------------");
        File[] file1 = file.listFiles();
        for(int i = 0;i < file1.length;i++) {
            System.out.println(file1[i]);
        }
    }

}

运行结果:

io
lang
math
net
nio
rmi
security
sql
text
util
--------------
D:\src\java\applet
D:\src\java\awt
D:\src\java\beans
D:\src\java\io
D:\src\java\lang
D:\src\java\math
D:\src\java\net
D:\src\java\nio
D:\src\java\rmi
D:\src\java\security
D:\src\java\sql
D:\src\java\text
D:\src\java\util

可以看出,list()方法只返回文件名,而 listFiles()方法不但返回文件名,还返回路径,后者更详细,

给定一个目录,要求列出此目录下的所有文件和目录:
分析:给定的目录可能包含子目录,所以需要递归,如果是文件则直接打印其名称,若是目录,则需要递归调用遍历方法:

public class AQ {

    public static void main(String[] args) {
        File file = new File("D:\\src/java/nio");
        fileList(file);
    }

    public static void fileList(File file) {
        if(file.isFile()) {                       //如果是文件直接打印
            System.out.println(file.getName());
        }else if(file.isDirectory()) {            //如果是目录,则需要遍历
            System.out.println(file.getPath()+"是目录");
            File[] fileName = file.listFiles();   //获取目录中的所有文件和目录
            for(int i = 0;i < fileName.length;i++) {
                fileList(fileName[i]);            //递归调用
            }
        }
    }

}

运行结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq2899349953/article/details/81155599
今日推荐