在这篇博文中,我们将学习添加到java.nio.file.Files 类中的新方法。
什么是java.nio.file.Files类在java11中?
这个类用于对文件系统的文件和目录进行操作。
它提供了各种静态方法来进行操作。
在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...)
通过这些方法,我们可以实现以下事情:
- 如何从文件中读取一个字符串
- 如何将一个字符串写进文件
这些是处理文件系统时常用的操作。
如何在java11之前从文件中读取字符串内容?
这个例子解释了如何读取一个文件的内容。首先,使用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();
}
}
}
输出:
This is test content
如上所示,我们从文件中读取字节并将其转换为字符串方法。
另外,也可以使用readString() 方法完成同样的工作。
使用readString()方法从文件中读取内容
该方法读取一个文件的所有内容并以字符串形式返回。
它还包含一个重载方法,用于将字节解码为字符的Charset。
这个方法在以下情况下会抛出异常。
java.nio.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 into a file
结论
学习了java 11版本中引入的新的Files方法和例子。