- 注册时间
- 2011-3-21
- 最后登录
- 2022-3-22
- 在线时间
- 1191 小时
- 阅读权限
- 200
- 积分
- 9457
- 帖子
- 1256
- 精华
- 0
- UID
- 1
|
在 Java 开发中,经常有网友遇到读取文本文件内容时,出现乱码的情况
大家可能也都知道是编码问题,但是如何正确加载文本内容呢?
可以参考下面代码:- /**
- * (#)ReadText.java 创建时间:Apr 7, 2011 11:14:16 PM<br />
- */
- package org.iscripts.test;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- /**
- * @author 林俊海(ialvin.cn) 广东·普宁·里湖
- */
- public class TextUtil {
-
- /**
- * 从文件中读取文本内容, 读取时使用平台默认编码解码文件中的字节序列
- * @param file 目标文件
- * @return
- * @throws IOException
- */
- public static String loadStringFromFile(File file) throws IOException {
- return TextUtil.loadStringFromFile(file, System.getProperty("file.encoding"));
- }
-
- /**
- * 从文件中读取文本内容
- * @param file 目标文件
- * @param encoding 目标文件的文本编码格式
- * @return
- * @throws IOException
- */
- public static String loadStringFromFile(File file, String encoding) throws IOException {
- BufferedReader reader = null;
- try {
- reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), encoding));
- StringBuilder builder = new StringBuilder();
- char[] chars = new char[4096];
- int length = 0;
- while (0 < (length = reader.read(chars))) {
- builder.append(chars, 0, length);
- }
- return builder.toString();
- } finally {
- try {
- if (reader != null) reader.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- public static void main(String[] args) throws IOException {
-
- File file = new File("D:\\我的文本.txt");
- System.out.println(loadStringFromFile(file, "GBK"));
- }
- }
复制代码 当然,如果要读取的目标文本文件是以 utf-8 或者 unicode 等编码存储的,那么 TextUtils.loadStringFromFile 方法第二个参数就要指定相应的编码格式。
附:《Java 写入文本文件》- http://www.iscripts.org/bbs/viewthread.php?tid=34 |
|