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类的一些常用方法,如创建和删除文件、重命名文件和查找文件等。