В Java/|InputStreamReader принимает кодировку для декодирования потоков байтов в потоки символов. Мы можем передать Стандартные наборы символов. UTF_8 в конструктор
InputStreamReader для чтения данных из файла UTF-8.
import java.nio.charset.StandardCharsets; //... try (FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8); BufferedReader reader = new BufferedReader(isr) ) { String str; while ((str = reader.readLine()) != null) { System.out.println(str); } } catch (IOException e) { e.printStackTrace(); }
В Java 7+ многие API для чтения файлов начинают принимать кодировку
в качестве аргумента, что делает чтение UTF-8 очень легким.
// Java 7 BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8); // Java 8 Listlist = Files.readAllLines(path, StandardCharsets.UTF_8); // Java 8 Stream lines = Files.lines(path, StandardCharsets.UTF_8); // Java 11 String s = Files.readString(path, StandardCharsets.UTF_8);
1. UTF-8 Файл
Файл в кодировке UTF-8 c:\\temp\\test.txt
, с китайскими иероглифами.
2. Прочитать файл UTF-8
В этом примере показано несколько способов чтения файла UTF-8.
package com.mkyong.io.howto; import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import java.util.stream.Stream; public class UnicodeRead { public static void main(String[] args) { String fileName = "c:\\temp\\test.txt"; //readUnicodeJava11(fileName); readUnicodeBufferedReader(fileName); //readUnicodeFiles(fileName); //readUnicodeClassic(fileName); } // Java 7 - Files.newBufferedReader(path, StandardCharsets.UTF_8) // Java 8 - Files.newBufferedReader(path) // default UTF-8 public static void readUnicodeBufferedReader(String fileName) { Path path = Paths.get(fileName); // Java 8, default UTF-8 try (BufferedReader reader = Files.newBufferedReader(path)) { String str; while ((str = reader.readLine()) != null) { System.out.println(str); } } catch (IOException e) { e.printStackTrace(); } } public static void readUnicodeFiles(String fileName) { Path path = Paths.get(fileName); try { // Java 11 String s = Files.readString(path, StandardCharsets.UTF_8); System.out.println(s); // Java 8 Listlist = Files.readAllLines(path, StandardCharsets.UTF_8); list.forEach(System.out::println); // Java 8 Stream lines = Files.lines(path, StandardCharsets.UTF_8); lines.forEach(System.out::println); } catch (IOException e) { e.printStackTrace(); } } // Java 11, adds charset to FileReader public static void readUnicodeJava11(String fileName) { Path path = Paths.get(fileName); try (FileReader fr = new FileReader(fileName, StandardCharsets.UTF_8); BufferedReader reader = new BufferedReader(fr)) { String str; while ((str = reader.readLine()) != null) { System.out.println(str); } } catch (IOException e) { e.printStackTrace(); } } public static void readUnicodeClassic(String fileName) { File file = new File(fileName); try (FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8); BufferedReader reader = new BufferedReader(isr) ) { String str; while ((str = reader.readLine()) != null) { System.out.println(str); } } catch (IOException e) { e.printStackTrace(); } } }
Выход
line 1 line 2 line 3 你好,世界
Дальнейшее чтение |/Как записать в файл UTF-8 на Java
Скачать Исходный Код
$клон git $клон git
$cd java-ввод-вывод
Рекомендации
- Файловый редактор javadoc
- БуферизоВанный файл javadoc
- Входящий поток чтения javadoc
- Википедия – UTF-8
- Кодировка JavaDoc
Оригинал: “https://mkyong.com/java/how-to-read-utf-8-encoded-data-from-a-file-java/”