0
点赞
收藏
分享

微信扫一扫

Java--IO流(File对象)

cnlinkchina 2022-04-20 阅读 36

File对象

File的介绍

File 类 就是当前系统中 文件或者文件夹的抽象表示
    
通俗的讲  就是 使用File对象 来操作我们电脑系统中的文件或者文件夹

学习File类 其实就是学习 如何通过file对象 对系统中的文件/文件夹进行增删改查

1.创建file对象

File 名字 =new File(路径);

路径path即:"什么盘/什么文件/什么文件/什么文件";

 路径分割符
         *  D:\haha\hehe\123.mp4    称之为路径  其中 \ 就是路径分割符 代表的是 下级目录
         *  在windows系统中 路径分割符为  \   在 Linux 和 Mac 中 路径分割符是 /
         *  我们写的java代码  需要跨平台 多环境运行   开发环境:windows   生成环境:Linux
         *  此时就会出现一个问题  如果我们的路径分隔符 写成 \  在 windows中好使 到了 Linux就不识别
         *  所以我们可以使用以下两种方式解决:

方式一:windows不仅支持\还支持/

File 名字 =new File("D:/abc/a/123.txt");

方式二:使用动态识别的常量,File.separator根据当前代码所在的系统获取相应的分隔符

File 名字=new File("D:"+File.separator+"abc"+File.separator+"a"+File.separator+"123.txt");

2.file的增加操作

我们创建了一个新的file对象并不是在电脑中已经添加了文件,在电脑中创建文件需要file的添加

一定记得要抛出错误

(1)创建相应的文件:

file对象.createNewFile();

(2)创建单层目录:

file对象.mkdir();

mkdir:make directory

(3)创建多层目录:

file对象.mkdirs()

根据你调用的方法不同会创建不同类型的文件

 File file01=new File("D:/Lianxi/hello.text");
 file01.createNewFile();//创建文件
 File file02=new File("D:/Lianxi/aaa");
 file02.mkdir();//创建单层目录
 File file03=new File("D:/Lianxi/A1/A2");
 file03.mkdirs();//创建多层目录

3.file的删除操作

(1)删除文件:

file对象名字.delete();

(2)延迟删除(休眠删除)

file对象名字.deleteOnExit();//当程序退出后 删除

Thread.sleep(毫秒);

记得要抛出异常不然sleep会报错

(3)删除空目录

file对象.delete();

删除目录的前提一定是目录下没有文件即该目录为空目录;

        File file04=new File("D:/Lianxi/eee");
        //删除指定的文件
        file04.delete();
        File file05=new File("D:/Lianxi/hello.text");
        //延迟删除文件也可以叫做休眠删除文件
        file04.deleteOnExit();//程序退出后删除
        //多少毫秒后删除
        Thread.sleep(5000);
        File file06=new File("D:/Lianxi/A1/A2");
        //删除目录文件前提是空目录
        file06.delete();

4.file的修改操作

(1)设置该文件的权限为不能读:

file对象.setRedadable(false);

(2)设置该文件的全选为不能写:

file对象.setWritable(false);

(3)设置文件为只读权限:

file对象.setReadOnly()

(4)重命名(剪切)

file对象.renameTo(new File(你要修改的路径));

        //创建一个file对象
        File file01=new File("D:/Lianxi/123.txt");
        //对原始文件进行重命名
        file01.renameTo(new File("D:/Lianxi/456.txt"));
        File file02=new File("D:/Lianxi/456.txt");
        //修改路径
        file01.renameTo(new File("D:/Lianxi/A1/A2/789.txt"));

5.file的查询操作

(1)得到当前文件的名称

file对象.getName();

(2)得到父级路径的名称

file对象.getParent();

(3)得到文件的路径名称:

file对象.Path();

(4)判断该对象文件是否为文件类型:

file对象.isFile();

如果是返回true否则返回false;

(5)判断该文件对象是否为目录类型

file对象.isDirectory();

如果是文件目录类型返回true否则返回false;

        File file=new File("D:/Lianxi/A1/A2/789.txt");
        //获取当前文件的文件名
        String str1=file.getName();
       // System.out.println("文件名为:"+str1);
        //获取当前文件的父级路径
        String str2=file.getParent();
        //System.out.println("文件的父级路径为:"+str2);
        //获取文件的路径
        String str3=file.getPath();
        System.out.println("文件的路径为:"+str3);
        //判断是否为文件类型
        boolean b1=file.isFile();
        System.out.println(b1);
        //判断该文件是否为文件目录类型
        boolean b2=file.isDirectory();
        System.out.println(b2);

面试题:显示指定目录下的所有文件

用方法的递归调用

 public static void main(String[] args) {
        showFile("D:/Lianxi");
    }
    public static void showFile(String path){
        //1.创建一个文件对象把路径参数传入
        File file01=new File(path);
        //2.判断文件类型,是否是文件是否是文件目录
        if(!file01.exists() || !file01.isDirectory()){
            return;
        }
        //3.创建一个文件数组来进行循环遍历;
        File[] files=file01.listFiles();
        //4.用for each循环来遍历输出
        for(File f:files){
            //5.判断文件类型是否为文件目录
            //如果是文件目录
            if(f.isDirectory()){
                //输出文件目录所在的路径
                System.out.println(f.getPath()+"<Dir>");
                //继续调用本方法
                showFile(f.getPath());
            }
            else {
                //如果不是则输出文件所在的路径
                System.out.println(f.getPath());
            }
        }
    }

IO流

IO流的介绍

IO都是全大写 说明肯定是两个单词的首字母
I   inputstream 输入流     O  outputstream  输出流

IO 称之为 java的输入输出

        其实学习IO  就是学习  如何通过java代码 对文件内容 进行   读(输入流)  写(输出流)
所以有一话:   读进来 写出去

IO的作用:就是对文件中的内容进行操作。

输入: 读操作(读取文件的内容)   输出: 写操作(往文件中写内容)

 IO流的分类:

 (1)根据流的方向:
    ---输入流: 程序可以从中读取数据的流。
    ---输出流: 程序能向其中写入数据的流。
    
 (2)根据流的单位:
    ---字节流: 以字节为单位传输数据的流
    ---字符流: 以字符为单位传输数据的流
 
 (3)根据功能
    ---节点流: 直接和文件进行交互,用于直接操作目标设备的流。
    ---处理流(过滤流): 不是直接作用在文件上。 是对一个已存在流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。
    
四个基本的流: 其他的流都是在这四个流的基础上进行扩展的
        字节输入流
        字节输出流
    
        字符输入流
        字符输出流

 

 

 

 Writer字符输出流

它是所有字符输出流的根类。---FileWriter类

字符输出流 ---指定对哪个文件(路径)进行写操作

1.创建:

Writer write对象=new FileWriter(路径)

2.添加

writer对象.write(内容);

3.刷新流

write对象.flush();

4.关闭流资源

write.close();

5.追加内容

上面每次往文件中写内容时 就会把原来的内容覆盖了。

我们只需要在创建write对象时在路径后加上true即:

Writer write对象=new FileWriter(路径,true)

举报

相关推荐

Java--IO流

JAVA--IO流

Java--IO流.基础

Java--IO

JAVA--IO(后)

泛型 File对象 IO流

JAVA-File、iO流

0 条评论