Java lit le fichier txt. Si le format d'encodage ne correspond pas, des caractères tronqués apparaîtront. Par conséquent, lors de la lecture de fichiers txt, vous devez définir l'encodage de lecture. Le format de codage des documents txt est écrit dans l'en-tête du fichier. Dans le programme, le format de codage du fichier doit d'abord être analysé. Après avoir obtenu le format de codage, la lecture du fichier dans ce format ne produira pas de caractères tronqués. (Recommandé : tutoriel vidéo Java)
L'encodage Java correspond à l'encodage txt :
Exemple :
package com.lfl.attachment; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; public class TextMain { public static void main(String[] args) throws Exception { String filePath = "D:/article.txt"; // String filePath = "D:/article333.txt"; // String filePath = "D:/article111.txt"; String content = readTxt(filePath); System.out.println(content); } /** * 解析普通文本文件 流式文件 如txt * @param path * @return */ @SuppressWarnings("unused") public static String readTxt(String path){ StringBuilder content = new StringBuilder(""); try { String code = resolveCode(path); File file = new File(path); InputStream is = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(is, code); BufferedReader br = new BufferedReader(isr); // char[] buf = new char[1024]; // int i = br.read(buf); // String s= new String(buf); // System.out.println(s); String str = ""; while (null != (str = br.readLine())) { content.append(str); } br.close(); } catch (Exception e) { e.printStackTrace(); System.err.println("读取文件:" + path + "失败!"); } return content.toString(); } public static String resolveCode(String path) throws Exception { // String filePath = "D:/article.txt"; //[-76, -85, -71] ANSI // String filePath = "D:/article111.txt"; //[-2, -1, 79] unicode big endian // String filePath = "D:/article222.txt"; //[-1, -2, 32] unicode // String filePath = "D:/article333.txt"; //[-17, -69, -65] UTF-8 InputStream inputStream = new FileInputStream(path); byte[] head = new byte[3]; inputStream.read(head); String code = "gb2312"; //或GBK if (head[0] == -1 && head[1] == -2 ) code = "UTF-16"; else if (head[0] == -2 && head[1] == -1 ) code = "Unicode"; else if(head[0]==-17 && head[1]==-69 && head[2] ==-65) code = "UTF-8"; inputStream.close(); System.out.println(code); return code; } }
Remarque : Dans la méthode solveTxt, le flux InputStream ne peut pas être transmis via la méthode readTxt. Cela entraînera la même référence de flux dans les deux méthodes, et dans la méthode solveTxt, trois octets du flux auront été lus et la position dans. le flux a déjà été lu. Il s'agit de 3, pas de la position de départ du flux. Lors de la lecture dans readTxt, une IOException : erreur de lecture se produira.
Pour plus de connaissances sur Java, veuillez faire attention à la colonne Tutoriel de base Java.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!