一篇文章教会你Java的IO文件

Java文件IO流介绍

  • Java文件IO流是Java编程语言中用于读取和写入文件的一组类和接口。这些类和接口位于 java.io包中,提供了丰富的功能来处理文件和目录。

1. File类

  • java.io.File类表示文件或目录的路径名。它提供了许多方法来操作文件和目录,如创建、删除、重命名等。

2. FileInputStream和FileOutputStream类

  • 这两个类用于从文件中读取数据和向文件中写入数据。FileInputStream类用于读取文件,而FileOutputStream类用于写入文件。
import java.io.*;


public class FileExample {
    String datapath="C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt";
    public static void main(String[] args) {
        FileExample fileExample=new FileExample();
        try {
            FileExample.fileOutput();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        try {
            FileExample.fileInput();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    public static void fileOutput() throws IOException{
        //创建一个FileOutputStream对象,指定要写入的文件路径。在这个例子中,文件路径是C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt。
        FileOutputStream fileOutputStream=new FileOutputStream("C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt");
        //使用BufferedWriter包装FileOutputStream ,以便更方便地按行写入文件内容。
        BufferedWriter bufferedWriter=new BufferedWriter(new OutputStreamWriter(fileOutputStream));
        fileOutputStream.write("i love you!".getBytes());
        //关闭BufferedWriter 和FileOutputStream 以释放资源
        fileOutputStream.close();
        bufferedWriter.close();
    }
    public static void fileInput() throws IOException{
        //创建一个FileInputStream对象,指定要读取的文件路径。在这个例子中,文件路径是C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt。
        FileInputStream fileInputStream=new FileInputStream("C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt");
        //使用BufferedReader包装FileInputStream,以便更方便地按行读取文件内容。
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
        String line;
        //使用while循环逐行读取文件内容。当readLine()方法返回null时,表示已经读取到文件末尾。
        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
        }
        //关闭BufferedReader和FileInputStream以释放资源。
        bufferedReader.close();
        fileInputStream.close();
    }
 }

3. BufferedReader和BufferedWriter类

  • 这两个类用于提高文件读写的性能。它们将数据存储在缓冲区中,然后一次性读取或写入大量数据。BufferedReader类用于读取文本文件,而BufferedWriter类用于写入文本文件。

4. FileReader和FileWriter类

  • 这两个类用于读取和写入字符文件。FileReader类用于读取字符文件,而FileWriter类用于写入字符文件。
import java.io.*;


public class FileExample {
    String datapath="C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt";
    public static void main(String[] args) {
        FileExample fileExample=new FileExample();
        try {
            FileExample.write();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        try {
            FileExample.read();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
      
    }
    public static void write() throws IOException{
      //FileWriter的构造函数接收两个参数:文件路径和一个布尔值。当布尔值为true时,表示以追加模式打开文件。
      //这意味着在写入新内容时,新内容将被追加到文件的末尾,而不是覆盖现有内容。
        FileWriter fileWriter=new FileWriter("C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt",true);
        BufferedWriter bufferedWriter=new BufferedWriter(fileWriter);
        bufferedWriter.write("i love you!");
        bufferedWriter.newLine();
        bufferedWriter.close();
        fileWriter.close();
    }

    public static void read() throws IOException{
        FileReader fileReader=new FileReader("C:\\Users\\DELL\\IdeaProjects\\pro23\\src\\HXK5_7\\FileData.txt");
        BufferedReader bufferedReader=new BufferedReader(fileReader);
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
        }
        fileReader.close();
        bufferedReader.close();
    }
}

5. Path类和Files类

  • java.nio.file.Path类表示文件系统中的文件路径。java.nio.file.Files类提供了许多静态方法来操作文件和目录,如读取、写入、复制、移动等。

FileInputStream、FileOutputStream类与FileReader、FileWriter类的区别:

1.FileInputStream和FileOutputStream:

  • FileInputStreamFileOutputStream类用于处理二进制文件。它们分别用于从文件中读取字节数据和向文件中写入字节数据。这两个类属于java.io包。
    • FileInputStream:用于从文件中读取字节数据。它是InputStream的子类,用于从文件系统中的文件读取原始字节流。
    • FileOutputStream:用于向文件中写入字节数据。它是OutputStream的子类,用于将原始字节流写入文件系统中的文件。
  • 使用FileInputStreamFileOutputStream时,需要处理字节和字节数组。这些类适用于处理图像、音频和视频等二进制文件。

2.FileReader和FileWriter

  • FileReaderFileWriter类用于处理文本文件。它们分别用于从文件中读取字符数据和向文件中写入字符数据。这两个类属于java.io包。
    • FileReader:用于从文件中读取字符数据。它是Reader的子类,用于读取字符流。FileReader使用默认字符编码和指定的文件名创建一个新的FileReader
    • FileWriter:用于向文件中写入字符数据。它是Writer的子类,用于写入字符流。FileWriter使用默认字符编码和指定的文件名创建一个新的FileWriter。
  • 使用FileReaderFileWriter时,需要处理字符和字符数组。这些类适用于处理文本文件,如.txt、.csv等。

文件创建与删除的实现

文件创建:

import java.io.*;


public class FileExample {
    public static void main(String[] args) {
    //()括号里写入你想创建文件的路径,以及文件名及其后缀名如:""D:\\FileExample\\bbbb.txt""
    //这里我在D盘中FileExample文件夹中创建了一个名为bbbb的txt文件
       File file = new File("D:\\FileExample\\bbbb.txt");
       try {
       //创建语句: file.createNewFile();
       //boolean newFileCreated 变量用于存储 createNewFile() 方法的返回值
       //当 createNewFile() 方法成功创建一个新文件时,它会返回 true,并将此值赋给 newFileCreated 变量。
                boolean newFileCreated = file.createNewFile();
                if (newFileCreated) {
                    System.out.println("文件创建成功");
                } else {
                    System.out.println("文件创建失败");
                }
            } catch (IOException e) {
                e.printStackTrace();
           }
    }
}

在这里插入图片描述

文件删除

import java.io.*;
public class FileExample {
    public static void main(String[] args) {
    //()括号里写入你想删除文件的路径,以及文件名及其后缀名如:"D:\\FileExample\\bbbb.txt"
    //这里我在D盘中FileExample文件夹中删除了一个名为bbbb的txt文件
       File file = new File("D:\\FileExample\\bbbb.txt");
       try {
       //删除语句: file.delete();
       //boolean fileDeleted 变量用于存储 file.delete(); 方法的返回值
       //当 file.delete(); 方法成功创建一个新文件时,它会返回 true,并将此值赋给 fileDeleted 变量。
        boolean fileDeleted = file.delete();
        if (fileDeleted) {
            System.out.println("文件删除成功");
        } else {
            System.out.println("文件删除失败");
        }
    }
}

在这里插入图片描述

文件夹创建

public class FileExample {
    public static void main(String[] args) {
//创建一个文件夹类 ()里填写想要创建的文件夹路径及其文件夹名
//此处我在D盘中FileExample文件夹里创建了一个名为lalala的文件夹
        File folder = new File("D:\\FileExample\\lalala");
        if (!folder.exists()) {
        //创建文件夹语句:folder.mkdirs();
            boolean folderCreated = folder.mkdirs();
            if (folderCreated) {
                System.out.println("文件夹创建成功");
            } else {
                System.out.println("文件夹创建失败");
            }
        }
    }

在这里插入图片描述

文件夹删除

public class FileExample {
    public static void main(String[] args) {
        File folder = new File("D:\\FileExample\\lalala");
        if (folder.exists()) {
        //删除语句:folder.delete();
            boolean folderDeleted = folder.delete();
            if (folderDeleted) {
                System.out.println("文件夹删除成功");
            } else {
                System.out.println("文件夹删除失败");
            }
        }
    }

在这里插入图片描述

文件和文件夹的操作

  • File 类提供了多种方法来操作文件和文件夹。
    • 检查存在性exists()
    • 删除delete()
    • 重命名renameTo(File dest)
    • 获取绝对路径:getAbsolutePath()`
    • 设置可读/可写setReadable(boolean writable, boolean ownerOnly)setWritable(boolean writable, boolean ownerOnly)`

列出文件夹内容

  • 可以使用 list()listFiles() 方法来列出文件夹中的文件和子文件夹。
public class FileExample {
    public static void main(String[] args) {
        File folder = new File("D:\\FileExample");
        String[] files = folder.list();
        for (String file : files) {
            System.out.println(file);
        }

在这里插入图片描述

注意事项

  • 在执行文件操作时,需要处理 IOException
  • 文件和文件夹的操作可能会受到操作系统权限的限制。
  • 请确保在实际应用中进行适当的异常处理和权限检查。
  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值