Java文件操作:读写文件和文件夹

使用JDK原生文件操作

在 JDK 中,我们可以使用 Java I/O API 操作文件和文件夹。Java I/O API 提供了许多类和接口来操作文件和文件夹。以下是一些常用的 Java I/O API 类:

  • ​java.io.File​​ - 用于表示文件和文件夹的路径,以及文件和文件夹的属性和操作。
  • ​java.io.FileInputStream​​ - 用于从文件读取数据。
  • ​java.io.FileOutputStream​​ - 用于将数据写入文件。
  • ​java.io.FileReader​​ - 用于从文件读取字符。
  • ​java.io.FileWriter​​ - 用于将字符写入文件。
  • ​java.io.BufferedReader​​ - 用于从字符流中读取文本。
  • ​java.io.BufferedWriter​​ - 用于将文本写入字符流。

创建文件

在 Java 中,我们可以使用 ​​java.io.File​​ 类创建一个文件。以下是一个例子:

import java.io.File;

public class FileCreateExample {
    public static void main(String[] args) {
        File file = new File("test.txt");
        try {
            if (file.createNewFile()) {
                System.out.println("File created: " + file.getName());
            } else {
                System.out.println("File already exists.");
            }
        } catch (Exception e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

在这个例子中,我们创建了一个 ​​File​​​ 对象,然后使用 ​​createNewFile​​ 方法创建了一个名为 "test.txt" 的文件。如果文件已经存在,则会打印出 "File already exists."。

读取文件

在 Java 中,我们可以使用 ​​java.io.FileInputStream​​ 类从文件中读取数据。以下是一个例子:

import java.io.FileInputStream;

public class FileReadExample {
    public static void main(String[] args) {
        try {
            FileInputStream fileInputStream = new FileInputStream("test.txt");
            int i;
            while ((i = fileInputStream.read()) != -1) {
                System.out.print((char) i);
            }
            fileInputStream.close();
        } catch (Exception e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

在这个例子中,我们使用 ​​FileInputStream​​​ 类从 "test.txt" 文件中读取数据。然后,我们使用 ​​while​​ 循环逐个字符读取文件中的内容,并将其打印出来。

写入文件

在 Java 中,我们可以使用 ​​java.io.FileOutputStream​​ 类将数据写入文件。以下是一个例子

import java.io.FileOutputStream;

public class FileWriteExample {
    public static void main(String[] args) {
        try {
            FileOutputStream fileOutputStream = new FileOutputStream("test.txt");
            String text = "Hello, World!";
            byte[] bytes = text.getBytes();
            fileOutputStream.write(bytes);
            fileOutputStream.close();
            System.out.println("Successfully wrote to the file.");
        } catch (Exception e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

在这个例子中,我们使用 ​​FileOutputStream​​ 类将 "Hello, World!" 字符串写入到 "test.txt" 文件中。

删除文件

在 Java 中,我们可以使用 ​​java.io.File​​ 类删除一个文件。以下是一个例子:

import java.io.File;

public class FileDeleteExample {
    public static void main(String[] args) {
        File file = new File("test.txt");
        if (file.delete()) {
            System.out.println("File deleted: " + file.getName());
        } else {
            System.out.println("Failed to delete the file.");
        }
    }
}

在这个例子中,我们创建了一个 ​​File​​​ 对象,然后使用 ​​delete​​ 方法删除了一个名为 "test.txt" 的文件。

复制文件

在 Java 中,我们可以使用 ​​java.io.FileInputStream​​​ 和 ​​java.io.FileOutputStream​​ 类来复制文件。以下是一个例子:

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class FileCopyExample {
    public static void main(String[] args) {
        try {
            FileInputStream fileInputStream = new FileInputStream("test.txt");
            FileOutputStream fileOutputStream = new FileOutputStream("test_copy.txt");
            byte[] buffer = new byte[1024];
            int length;
            while ((length = fileInputStream.read(buffer)) > 0) {
                fileOutputStream.write(buffer, 0, length);
            }
            fileInputStream.close();
            fileOutputStream.close();
            System.out.println("File copied successfully.");
        } catch (Exception e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

在这个例子中,我们使用 ​​FileInputStream​​​ 类从 "test.txt" 文件中读取数据,并使用 ​​FileOutputStream​​ 类将数据写入 "test_copy.txt" 文件中。

重命名文件

在 Java 中,我们可以使用 ​​java.io.File​​ 类重命名一个文件。以下是一个例子:

import java.io.File;

public class FileRenameExample {
    public static void main(String[] args) {
        File file = new File("test.txt");
        File renamedFile = new File("test_renamed.txt");
        if (file.renameTo(renamedFile)) {
            System.out.println("File renamed successfully.");
        } else {
            System.out.println("Failed to rename the file.");
        }
    }
}

在这个例子中,我们创建了一个 ​​File​​​ 对象,并使用 ​​renameTo​​ 方法将 "test.txt" 文件重命名为 "test_renamed.txt"。

查找文件

在 Java 中,我们可以使用 ​​java.io.File​​ 类查找文件和文件夹。以下是一个例子:

import java.io.File;

public class FileSearchExample {
    public static void main(String[] args) {
        File dir = new File(".");
        File[] files = dir.listFiles();
        for (File file : files) {
            if (file.isFile()) {
                System.out.println("File: " + file.getName());
            } else if (file.isDirectory()) {
                System.out.println("Directory: " + file.getName());
            }
        }
    }
}

在这个例子中,我们创建了一个 ​​File​​​ 对象来代表当前目录,然后使用 ​​listFiles​​ 方法获取当前目录中的所有文件和文件夹,并使用一个 for 循环来打印每个文件和文件夹的名称。

使用 Apache Commons IO 库

除了使用 JDK 原生的文件操作类外,还可以使用第三方类库来进行文件操作。Apache Commons IO 是一个非常流行的 Java 文件操作类库,它提供了许多有用的类和方法,可以让我们更轻松地进行文件操作。以下是一些示例代码,展示了如何使用 Apache Commons IO 库进行文件操作。

写入文件

使用 Apache Commons IO 库写入文件可以更加简单。以下是一个使用 ​​FileUtils​​ 类写入文件的例子:

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class FileWriteExample {
    public static void main(String[] args) {
        try {
            File file = new File("test.txt");
            String text = "Hello, World!";
            FileUtils.writeStringToFile(file, text, "UTF-8");
            System.out.println("Successfully wrote to the file.");
        } catch (IOException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}

在这个例子中,我们使用 ​​FileUtils.writeStringToFile​​ 方法将字符串写入到文件中。该方法会自动创建文件,如果文件已经存在,它会将现有文件覆盖。

删除文件

使用 Apache Commons IO 库删除文件也非常简单。以下是一个使用 ​​FileUtils​​ 类删除文件的例子:

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class FileDeleteExample {
    public static void main(String[] args) {
        File file = new File("test.txt");
        try {
            FileUtils.forceDelete(file);
            System.out.println("File deleted: " + file.getName());
        } catch (IOException e) {
            System.out.println("Failed to delete the file.");
            e.printStackTrace();
        }
    }
}

在这个例子中,我们使用 ​​FileUtils.forceDelete​​​ 方法删除文件。与 ​​File​​​ 类的 ​​delete​​​ 方法不同,​​FileUtils.forceDelete​​ 方法可以删除非空文件夹。

复制文件

使用 Apache Commons IO 库复制文件也非常简单。以下是一个使用 ​​FileUtils​​ 类复制文件的例子:

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class FileCopyExample {
    public static void main(String[] args) {
        try {
            File srcFile = new File("test.txt");
            File destFile = new File("test_copy.txt");
            FileUtils.copyFile(srcFile, destFile);
            System.out.println("File copied successfully.");
        } catch (IOException e)
              System.out.println("An error occurred.");
          e.printStackTrace();
        }
        }
}

在这个例子中,我们使用 ​​FileUtils.copyFile​​ 方法将一个文件复制到另一个文件。该方法会自动创建目标文件,如果目标文件已经存在,它会将现有文件覆盖。

列出文件和文件夹

使用 Apache Commons IO 库列出文件和文件夹也非常简单。以下是一个使用 ​​FileUtils​​ 类列出文件和文件夹的例子:

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.util.Collection;

public class FileSearchExample {
    public static void main(String[] args) {
        File dir = new File(".");
        Collection<File> files = FileUtils.listFilesAndDirs(dir, null, true);
        for (File file : files) {
            if (file.isFile()) {
                System.out.println("File: " + file.getName());
            } else if (file.isDirectory()) {
                System.out.println("Directory: " + file.getName());
            }
        }
    }
}

在这个例子中,我们使用 ​​FileUtils.listFilesAndDirs​​​ 方法获取指定目录中的所有文件和文件夹。该方法返回一个 ​​Collection​​​,其中包含所有文件和文件夹的 ​​File​​ 对象。

结论

在 Java 中进行文件操作是非常常见的任务。JDK 提供了许多有用的类和方法,可以让我们轻松地进行文件操作。此外,还有许多第三方类库可以帮助我们更轻松地进行文件操作,如 Apache Commons IO 等。无论您选择使用 JDK 还是第三方类库,都可以很容易地进行文件操作。​

猜你喜欢

转载自blog.csdn.net/bairo007/article/details/132401060
今日推荐