在这篇博文中,我们将学习添加到java.nio.file.Files类的新方法。
这个类用于对文件系统的文件和目录进行操作。它提供了各种静态方法来进行操作。
在Java 11中,Files类增加了以下方法,用于将文件内容转换为/从字符串。
Java 11 Files的新方法
- String Files.readString(Path path)
- String Files.readString(Path, Charset)
- Path Files.write(Path, CharSequence, OpenOption...)
- Path Files.write(Path, CharSequence, Charset, OpenOption...)
通过这些方法,我们可以实现以下事项
- 如何从文件中读取字符串
- 如何将一个字符串写入一个文件
这些都是处理文件系统时常用的操作。
在Java 11之前,从文件中读取字符串内容
这个例子解释了如何读取文件的内容 首先使用readAllBytes方法从文件中读取所有字节,该方法返回字节数组 将其转换为字符串,以字节数组作为字符串构造函数的参数
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Files1 {
public static void main(String[] args) {
// First Create a Path Object
Path path = Paths.get("b://files1.txt");
//Create a file
try {
byte[] bs = Files.readAllBytes(path);
System.out.println(new String(bs));
} catch (IOException e) {
e.printStackTrace();
}
}
}
正如我们所看到的,我们如何从文件中读取并将字节转换成字符串方法。同样可以通过readString()方法来完成。
readString()方法
该方法读取文件的所有内容并以字符串形式返回。它还包含一个重载方法,用于将字节解码为字符的Charset。
这个方法在以下情况下会抛出异常
- java.io.file.NoSuchFileException: - 如果文件在文件系统中不存在。
- java.io.IOException- 在传输文件到String的IO操作中抛出该异常。
- java.lang.OutOfMemoryError- 当文件大小很大时,例如2GB的文件大小,会抛出这个异常。
- java.lang.SecurityException- 当访问文件时出现权限访问问题时抛出此异常 语法
语法
public static String readString(Path path) throws IOException
public static String readString(Path path, Charset cs) throws IOException
例子
这个例子显示了如何
- 将文件内容读成一个字符串
- 使用UTF-8解码将文件内容读成字符串
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Files1 {
public static void main(String[] args) {
// First Create a Path Object
Path path = Paths.get("b://files1.txt");
//Read a file
try {
String string = Files.readString(path);
System.out.println(string);
String string1 = Files.readString(path,StandardCharsets.UTF_8);
System.out.println(string1);
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出是
Test content from a file
Test content from a file
writeString()方法
该方法用于将字符串写入文件系统的文件中。
- 该方法在以下情况下会抛出异常java.lang.IllegalArgumentException- 当提供无效的选项时,会抛出该异常。
- java.io.IOException- 在IO操作过程中,当向文件写入字符串时出现错误,会抛出这个异常。
- java.lang.UnsupportedOperationException- 当提供不支持的操作时,会抛出这个异常。
- java.lang.SecurityException- 当访问文件时出现权限访问问题时,会抛出这个异常。
签名
public static Path writeString(Path path, CharSequence csq, OpenOption... options) throws IOException
public static Path writeString(Path path, CharSequence csq, Charset cs, OpenOption... options)
例子
这个例子展示了如何使用UTF-8解码将一个字符串写入文件中。
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Files1 {
public static void main(String[] args) {
// First Create a Path Object
Path path = Paths.get("b://files1.txt");
CharSequence sequenceString = "new string adding content in to a file";
//Read a file
try {
Path newPath= Files.writeString(path,sequenceString);
String string1 = Files.readString(newPath,StandardCharsets.UTF_8);
System.out.println(string1);
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出是
new string adding content in to a file