您的位置:

Java文件读写

Java文件读写是Java程序中最常见的操作之一。Java通过一系列的API提供了方便的文件读写能力,不论是从文件中读取数据、向文件中写入数据,甚至是文件的创建和删除,Java都能满足我们的需求。接下来,本文将重点介绍Java文件读写的相关内容。

一、文件读取

Java提供了File和FileInputStream两个类来实现文件的读取操作。

首先,我们需要创建一个File对象,用于描述我们要读取的文件。接着,我们就可以使用FileInputStream来读取文件。

// 创建一个File对象
File file = new File("example.txt");

// 创建FileInputStream对象
try (FileInputStream fis = new FileInputStream(file)) {
    // 读取文件内容
    byte[] content = new byte[(int) file.length()];
    fis.read(content);
    String text = new String(content);
    System.out.println(text);
} catch (IOException e) {
    e.printStackTrace();
}

代码中,我们首先创建了一个File对象,该对象描述了我们要读取的文件。然后使用FileInputStream来读取文件的内容。为了方便,我们使用了try-with-resources的方式,自动关闭了文件流。

除了FileInputStream之外,我们还可以使用BufferedReader类来读取文件。相比于FileInputStream,BufferedReader可以使用一行代码来读取整个文件,而且还支持指定字符编码。

// 创建一个File对象
File file = new File("example.txt");

// 创建BufferedReader对象
try (BufferedReader reader = 
        new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"))) {
    // 读取文件内容
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

BufferedReader的使用方法与FileInputStream类似,需要传入要读取的文件的File对象,并指定字符编码。在读取文件内容时,我们可以使用readLine()方法一行一行地读取,并且支持指定字符编码。

二、文件写入

除了文件读取,Java还提供了File和FileOutputStream两个类来实现文件的写入操作。

我们可以使用FileOutputStream来向文件中写入数据。为了方便,我们再次使用try-with-resources的方式来自动关闭文件流。

// 创建一个File对象
File file = new File("example.txt");

// 创建FileOutputStream对象
try (FileOutputStream fos = new FileOutputStream(file)) {
    // 写入文件内容
    String text = "Hello, Java world!";
    fos.write(text.getBytes());
    fos.flush();
} catch (IOException e) {
    e.printStackTrace();
}

代码中,我们首先创建了一个File对象,该对象描述了我们要写入数据的文件。然后使用FileOutputStream来向文件中写入数据。与读取文件类似,我们也使用了try-with-resources的方式来自动关闭文件流。在写入文件内容时,我们可以使用write()方法将字符串转换为字节数组并写入文件,最后使用flush()方法将所有缓存的数据刷入磁盘。

同样,除了FileOutputStream之外,我们还可以使用PrintWriter或BufferedWriter来写入文件。它们支持格式化输出和指定字符编码。

// 创建一个File对象
File file = new File("example.txt");

// 创建PrintWriter对象
try (PrintWriter writer = new PrintWriter(new FileWriter(file))) {
    // 写入文件内容
    String text = "Hello, Java world!";
    writer.println(text);
} catch (IOException e) {
    e.printStackTrace();
}

代码中,我们使用了PrintWriter来向文件中写入数据。与FileOutputStream类似,我们需要传入要写入的文件的File对象,并使用try-with-resources的方式来自动关闭文件流。在写入文件内容时,我们可以使用println()方法一行一行地写入。

三、文件操作

除了文件读写,Java还提供了File类来进行文件的操作,如文件的创建、删除、重命名和查找等。

我们可以使用File类的静态方法创建新的文件或目录。

// 创建一个新的文件
File file = new File("example.txt");
if (!file.exists()) {
    try {
        file.createNewFile();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

// 创建一个新的目录
File dir = new File("mydir");
if (!dir.exists()) {
    dir.mkdir();
}

代码中,我们使用File类的静态方法创建了一个新的文件和一个新的目录。其中,createNewFile()方法用于创建新的文件,mkdir()方法用于创建新的目录。

除了创建文件和目录,我们也可以使用File类来删除文件和目录。

// 删除一个文件
File file = new File("example.txt");
if (file.exists()) {
    file.delete();
}

// 删除整个目录
File dir = new File("mydir");
if (dir.exists()) {
    File[] files = dir.listFiles();
    if (files != null) {
        for (File f : files) {
            f.delete();
        }
    }
    dir.delete();
}

代码中,我们使用File类的delete()方法来删除文件或目录。对于目录,我们需要先递归删除目录下的所有文件,再删除整个目录。

最后,我们还可以使用File类来重命名文件或目录,以及查找文件或目录。

// 将文件重命名为example_new.txt
File file = new File("example.txt");
File newFile = new File("example_new.txt");
if (file.exists()) {
    file.renameTo(newFile);
}

// 查找mydir目录下的所有文件和目录
File dir = new File("mydir");
if (dir.exists()) {
    File[] files = dir.listFiles();
    if (files != null) {
        for (File f : files) {
            System.out.println(f.getName());
        }
    }
}

代码中,我们使用File类的renameTo()方法来将文件或目录重命名为另一个名称。对于查找文件或目录,我们使用File类的listFiles()方法来获取所有文件和目录的列表。

小结

本文主要介绍了Java文件读写的相关内容。我们首先介绍了文件读取的两种方式,一种是使用FileInputStream,另一种是使用BufferedReader;再介绍了文件写入的两种方式,一种是使用FileOutputStream,另一种是使用PrintWriter;最后,我们还介绍了File类的一些常用方法,如创建和删除文件、重命名文件和查找文件等。