Java中的Files类是java.nio.file包下的一个工具类,它提供了一些用于文件和目录操作的静态方法,这些方法都是基于NIO(New Input/Output)的,相比于传统的IO操作,NIO更加高效、灵活,下面我们来详细介绍一下Files类中常用的方法。
1、创建文件或目录
创建文件可以使用Files类的createFile()方法,创建目录可以使用createDirectory()方法,这两个方法都接受一个Path对象作为参数,表示要创建的文件或目录的路径,如果文件或目录已经存在,那么这两个方法都会抛出FileAlreadyExistsException异常。
示例代码:
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class FilesDemo { public static void main(String[] args) { Path filePath = Paths.get("test.txt"); Path dirPath = Paths.get("testDir"); try { Files.createFile(filePath); Files.createDirectory(dirPath); } catch (IOException e) { e.printStackTrace(); } } }
2、读取文件内容
Files类提供了readAllBytes()、readAllLines()、readAllChars()等方法,用于读取文件的内容,这些方法都接受一个Path对象和一个Charset对象作为参数,表示要读取的文件的路径和字符集,返回值是一个字节数组、字符串列表或字符数组,分别对应于文件的全部内容、所有行的内容和所有字符的内容。
示例代码:
import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; public class FilesDemo { public static void main(String[] args) { Path filePath = Paths.get("test.txt"); try { byte[] bytes = Files.readAllBytes(filePath); String content = new String(bytes, StandardCharsets.UTF_8); System.out.println("文件内容:" + content); } catch (IOException e) { e.printStackTrace(); } } }
3、写入文件内容
Files类提供了write()、writeAllBytes()、writeAllLines()等方法,用于将内容写入文件,这些方法都接受一个Path对象和一个字节数组、字符串列表或字符串作为参数,表示要写入的文件的路径和内容,如果文件不存在,那么这些方法都会创建一个新文件;如果文件已存在,那么这些方法都会覆盖原有内容。
示例代码:
import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; public class FilesDemo { public static void main(String[] args) { Path filePath = Paths.get("test.txt"); String content = "Hello, world!"; List<String> lines = List.of("Line 1", "Line 2", "Line 3"); byte[] bytes = content.getBytes(StandardCharsets.UTF_8); byte[] allBytes = linesToBytes(lines); try { Files.write(filePath, content.getBytes(StandardCharsets.UTF_8)); // 覆盖原有内容 Files.write(filePath, allBytes); // 覆盖原有内容,写入多行内容 } catch (IOException e) { e.printStackTrace(); } finally { try { Files.write(filePath, bytes); // 覆盖原有内容,写入单行内容 } catch (IOException e) { e.printStackTrace(); } } } private static byte[] linesToBytes(List<String> lines) { return lines.stream().map(line -> line + System.lineSeparator()).collect(Collectors.joining()).getBytes(StandardCharsets.UTF_8); } }
4、删除文件或目录
Files类提供了delete()、deleteIfExists()等方法,用于删除文件或目录,这些方法都接受一个Path对象作为参数,表示要删除的文件或目录的路径,如果文件或目录不存在,那么这些方法都不会执行任何操作;如果文件或目录存在,那么这些方法都会删除它们,deleteIfExists()方法还会返回一个布尔值,表示是否成功删除了文件或目录。
示例代码:
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; import javafx.scene.control.*; // 引入ComboBox控件所需的库,这里以JavaFX为例,实际项目中可以根据需求选择其他库或自定义控件实现类似功能。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/226610.html