Java NIO - File(文件)
-
简述
Java NIO包提供了另一个名为Files的实用程序API,它基本上用于使用其静态方法操作文件和目录,这些方法主要适用于Path对象。如 Path 教程中所述,路径接口是在 Java 7 版本的文件包中引入的 Java NIO 包中。因此,本教程适用于相同的文件包。此类仅由对文件、目录或其他类型的文件进行操作的静态方法组成。在大多数情况下,此处定义的方法将委托给关联的文件系统提供程序来执行文件操作。在 Files 类中定义了许多方法,这些方法也可以从 Java 文档中读取。在本教程中,我们试图涵盖 Java NIO 文件类的所有方法中的一些重要方法。 -
文件类的重要方法。
以下是在 Java NIO 文件类中定义的重要方法。-
createFile(Path filePath, FileAttribute attrs) − 文件类提供此方法,以使用指定的路径创建文件。
-
-
例
package com.java.nio; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class CreateFile { public static void main(String[] args) { //initialize Path object Path path = Paths.get("D:file.txt"); //create file try { Path createdFilePath = Files.createFile(path); System.out.println("Created a file at : "+createdFilePath); } catch (IOException e) { e.printStackTrace(); } } }
-
输出
Created a file at : D:\data\file.txt
-
copy(InputStream in, Path target, CopyOption� options) − 此方法用于将指定输入流中的所有字节复制到指定的目标文件,并返回读取或写入的字节数作为长值。链接选择具有以下值的此参数 −
-
COPY_ATTRIBUTES − 将属性复制到新文件,例如上次修改时间属性。
-
REPLACE_EXISTING − 替换现有文件(如果存在)。
-
NOFOLLOW_LINKS − 如果文件是符号链接,则复制链接本身,而不是链接的目标。
-
-
例
package com.java.nio; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.List; public class WriteFile { public static void main(String[] args) { Path sourceFile = Paths.get("D:file.txt"); Path targetFile = Paths.get("D:fileCopy.txt"); try { Files.copy(sourceFile, targetFile, StandardCopyOption.REPLACE_EXISTING); } catch (IOException ex) { System.err.format("I/O Error when copying file"); } Path wiki_path = Paths.get("D:fileCopy.txt"); Charset charset = Charset.forName("ISO-8859-1"); try { List<String> lines = Files.readAllLines(wiki_path, charset); for (String line : lines) { System.out.println(line); } } catch (IOException e) { System.out.println(e); } } }
-
输出
To be or not to be?
-
createDirectories(Path dir, FileAttribute...attrs) − 此方法用于通过创建所有不存在的父目录来使用给定路径创建目录。
-
delete(Path path) − 此方法用于从指定路径中删除文件。如果文件在指定路径处不存在,或者如果文件是目录,并且该文件可能不为空且无法删除,则会引发 NoSuchFileException。
-
exists(Path path) − 此方法用于检查文件是否存在于指定路径,如果文件存在,它将返回 true,否则将返回 false。
-
readAllBytes(Path path) − 此方法用于在给定路径处从文件读取所有字节,并返回包含从文件中读取的字节的字节数组。
-
-
例
package com.java.nio; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; public class ReadFile { public static void main(String[] args) { Path wiki_path = Paths.get("D:file.txt"); Charset charset = Charset.forName("ISO-8859-1"); try { List<String> lines = Files.readAllLines(wiki_path, charset); for (String line : lines) { System.out.println(line); } } catch (IOException e) { System.out.println(e); } } }
-
输出
Welcome to file.
-
size(Path path) − 此方法用于获取指定路径处的文件大小(以字节为单位)。
-
write(Path path, byte[] bytes, OpenOption� options) − 此方法用于将字节写入指定路径处的文件。
-
-
例
package com.java.nio; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; public class WriteFile { public static void main(String[] args) { Path path = Paths.get("D:file.txt"); String question = "To be or not to be?"; Charset charset = Charset.forName("ISO-8859-1"); try { Files.write(path, question.getBytes()); List<String> lines = Files.readAllLines(path, charset); for (String line : lines) { System.out.println(line); } } catch (IOException e) { System.out.println(e); } } }
-
输出
To be or not to be?