文件操作和IO

目录

一、文件操作

1.1 File类概述

1.1.1 属性

 1.1.2 构造方法

1.1.3 方法

1.2 File类的使用

1.2.1 isDirectory()

 ​编辑

 1.2.2 delete()

1.2.3 mkDIr()

 1.2.4 mkDirs()

1.2.5 get系列

 二、InPutStream/FileInPutStream(字节输入流)

2.1 InPutStream概述

2.1.1 方法

2.2 FileInPutStream概述

2.2.1 构造方法

2.3 示例代码

2.3.1 读一个文件,将文件里的内容打印出来

三、OutPutStream/FileOutPutStream(字节输出流)

3.1 OutPutStream概述

3.1.1 方法

3.2 FileOutPutStream概述

3.2.1 构造方法

3.3 示例代码 

3.3.1 向e:/test10.txt文件中写入内容


一、文件操作

1.1 File类概述

1.1.1 属性

 1.1.2 构造方法

1.1.3 方法

下面是File类中一些常用的方法。

 

1.2 File类的使用

1.2.1 isDirectory()

isDirectory()方法是用来判断File对象代表的文件是否是目录。

下面为代码示例:

import java.io.File;

public class IODemo4 {
    public static void main(String[] args) {
        File file = new File("e:/temp");
        boolean flag = file.isDirectory();
        System.out.println(flag);

        File file1 = new File("e:/image3.png");
        Boolean flag1 = file1.isDirectory();
        System.out.println(flag1);

    }
}

 

 我们看到e盘下的temp是一个目录,e盘下image3.png是一个文件。而我们通过文件资源管理器进行验证的结果也正是如此。

 注意:判断是否是文件可以用isFile()来进行操作。这里就不做演示了。

 1.2.2 delete()

delete()方法是用来进行文件删除的。它是一个返回值为boolean类型的函数。

下面为代码示例:

    public static void main(String[] args) {
        File file = new File("e:/Dog.txt");
        if (file!=null) {
            boolean delete = file.delete();
            System.out.println(delete);
        }
    }

 我们看见,delete()方法返回了一个true。当我们正在去e盘找Dog.txt的时候,发现它已经不存在了。说明删除成功了。

1.2.3 mkDIr()

我们使用mkDIr()方法可以创建一个一级目录。

下面为代码示例:

  public static void main(String[] args) {
        File file = new File("e:/111");
        boolean flag = file.mkdir();;
        System.out.println(flag);
    }

上述代码中,我们想利用mkDir()方法在e盘下创建一个111目录。我们看见,mkDir()返回了一个true,在e盘下进行检查,确实成功创建了一个111目录。

那我们用mkDir创建多级目录会怎么样呢? 

下面为代码示例:

    public static void main(String[] args) {
        File file = new File("e:/222/bbb");
        boolean flag = file.mkdir();;
        System.out.println(flag);
    }

 这个代码我们想要在e盘下创建多个目录,222目录下有一个bbb目录。能创建成功吗?

答案是不行,返回值为false。并且在e盘下也找不到此目录。

注意:当路径的中间目录不存在时,mkDIr()方法就无法创建成功。而mkDirs()可以解决此问题。

 1.2.4 mkDirs()

mkDirs()方法是用来创建多级目录的。上面没有完成的任务就可以用它来完成。

下面为代码示例:

  public static void main(String[] args) {
        File file = new File("e:/222/bbb");
        boolean flag = file.mkdirs();;
        System.out.println(flag);
    }

这个代码我们想在e盘下创建一个多级目录。222目录下有一个bbb目录。 

 

1.2.5 get系列

get系列有很多,我们只选其中最常用的几个进行测试。

下面为代码示例:

   public static void main(String[] args) throws IOException {
        File file = new File("../bbb");
        System.out.println(file.getName());//返回文件名
        System.out.println(file.getPath());//返回抽象路径名
        System.out.println(file.getAbsolutePath());//返回绝对路径
        System.out.println(file.getCanonicalPath());//返回此抽象路径名的规范路径名字符串
        System.out.println(file.getParent());//返回父亲目录路径

    }

 二、InPutStream/FileInPutStream(字节输入流)

2.1 InPutStream概述

2.1.1 方法

 

注意:InPutStream是一个抽象类,因此无法直接实例化。

2.2 FileInPutStream概述

FileInPutStream是InPutStream的一个实现类。

2.2.1 构造方法

2.3 示例代码

2.3.1 读一个文件,将文件里的内容打印出来

//一个一个字节读
public static void main(String[] args) throws IOException {
        InputStream inputStream = new FileInputStream("e:/hello.txt");
        int len = 0;
        while((len = inputStream.read())!=-1){
            System.out.print((char)len);
        }
        inputStream.close();
    }

//使用byte数组读
  public static void main(String[] args) throws IOException {
        InputStream inputStream = new FileInputStream("e:/hello.txt");
        int len = 0;
        byte[] bytes = new byte[1024];
        while((len = inputStream.read(bytes))!=-1){
            System.out.println(new String(bytes,0,len));
        }
        inputStream.close();
    }

上面读文件使用了两种方法,一种是一个字节一个字节读。一个是使用byte数组读。后者的效率会更高。

注意:1. 使用完后记得close()。

           2. 使用字节输入流读汉字的时候,可能会出现乱码。建议使用字符输入流读数据。

三、OutPutStream/FileOutPutStream(字节输出流)

3.1 OutPutStream概述

3.1.1 方法

 注意:OutPutStream和InPutStream一样,是抽象类,无法直接实例化。因此需要具体的实现类。

3.2 FileOutPutStream概述

FileOutPutStream是OutPutStream的一个实现类。

3.2.1 构造方法

3.3 示例代码 

3.3.1 向e:/test10.txt文件中写入内容

    //一个一个写  
    public static void main(String[] args) throws IOException {
        OutputStream outputStream = new FileOutputStream("e:/test10.txt");
        outputStream.write('a');
        outputStream.write('b');
        outputStream.write('c');
        outputStream.write('d');
        outputStream.write('e');

        outputStream.flush();
        outputStream.close();
    }
    
    //直接写一个byte数组
    public static void main(String[] args) throws IOException {
        OutputStream outputStream = new FileOutputStream("e:/test10.txt");
        byte[] bytes = {'a','b','c','d','e'};

        outputStream.write(bytes);
        outputStream.flush();
        outputStream.close();
    }

注意:1. 最后的时候需要调用close()来关闭OutPutStream。

            2. 如果用字节输出流写汉字的话,可能会出现乱码。因此建议使用字符输出流写汉字。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值