使用 Java 从文件读取 UTF8 数据
通常,数据以位(1 或 0)的形式存储在计算机中。有多种编码方案可用于指定每个字符所代表的字节集。
Unicode (UTF) − 代表 Unicode 翻译格式。它由 Unicode 联盟开发。如果您要创建使用来自多个字符集的字符的文档,则可以使用单一 Unicode 字符编码来实现。它提供 3 种类型的编码。
UTF-8 − 它以 8 位(字节)为单位,UTF8 中的字符长度可以是 1 到 4 个字节,因此 UTF8 的宽度可变。
UTF-16 −它以 16 位短整型 (short) 为单位,长度可以是 1 或 2 个短整型,因此 UTF16 的宽度可变。
UTF-32 − 它以 32 位长整型 (long) 为单位。它是一种固定宽度格式,长度始终为 1 个"long"。
将 UTF 数据写入文件
java.io.DataOutputStream 的 readUTF() 方法将采用改进型 UTF-8 编码的数据读取到字符串中并返回。因此,要将 UTF-8 数据读取到文件 −
通过传递表示所需文件路径的字符串值作为参数来实例化 FileInputStream 类。
绕过上面创建的 FileInputStream 对象作为参数来实例化 DataInputStream 类。
使用 readUTF() 方法从 InputStream 对象读取 UTF 数据。
示例
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.IOException;
public class UTF8Example {
public static void main(String args[]) {
StringBuffer buffer = new StringBuffer();
try {
//实例化 FileInputStream 类
FileInputStream fileIn = new FileInputStream("D:\test.txt");
//实例化 DataInputStream 类
DataInputStream inputStream = new DataInputStream(fileIn);
//从 DataInputStream 读取 UTF 数据
while(inputStream.available()>0) {
buffer.append(inputStream.readUTF());
}
}
catch(EOFException ex) {
System.out.println(ex.toString());
}
catch(IOException ex) {
System.out.println(ex.toString());
}
System.out.println("Contents of the file: "+buffer.toString());
}
}
输出
Contents of the file: టుటోరియల్స్ పాయింట్ కి స్వాగతిం
java.nio.file.Files 类新增了 bufferedReader() 方法,该方法接受一个表示文件路径的 Path 类对象和一个表示要读取的字符序列类型的 Charset 类对象作为参数,并返回一个可以读取指定格式数据的 BufferedReader 对象。
Charset 的值可以是 StandardCharsets.UTF_8、StandardCharsets.UTF_16LE、StandardCharsets.UTF_16BE、StandardCharsets.UTF_16、StandardCharsets.US_ASCII 或 StandardCharsets.ISO_8859_1
因此,要将 UTF-8 数据读取到文件 −
使用 Path 类的 get() 方法创建/获取表示所需路径的对象。 java.nio.file.Paths 类。
创建/获取一个 BufferedReader 对象,该对象可以读取 UtF-8 数据,绕过上面创建的 Path 对象和 StandardCharsets.UTF_8 作为参数。
使用 BufferedReader 对象的 readLine() 方法读取文件内容。
示例
import java.io.BufferedReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class UTF8Example {
public static void main(String args[]) throws Exception{
//获取 Path 对象
String filePath = "D:\samplefile.txt";
Path path = Paths.get(filePath);
//创建 BufferedReader 对象
BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8);
//从文件中读取 UTF-8 数据
StringBuffer buffer = new StringBuffer();
int ch = 0;
while((ch = reader.read())!=-1) {
buffer.append((char)ch+reader.readLine());
}
System.out.println("Contents of the file: "+buffer.toString());
}
}
输出
Contents of the file: టుటోరియల్స్ పాయింట్ కి స్వాగతిం

