`
mr.lili
  • 浏览: 152454 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类

java读取文件夹下面unicode编码文件内容,并转换为utf-8保存

 
阅读更多
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.FilterReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ConUniToUTF {

/**
* @param args
*/
public static void main(String[] args) {
System.out.println("aaaaa");

// 读取unicode编码
try {
// String path = "D:\\English\\BBC\\";// 读取该目录下的文件
// String path = "D:\\English\\BBC\\140317BBC\\140317_03";// 读取该目录下的文件
String path = "J:\\English\\BBC\\140317BBC\\02";// 读取该目录下的文件

String endName = "";
List<String> pathList = getFile(path);//获得该目录下的文件路径
String filepath = "";
for (int i = 0; i < pathList.size(); i++) {
filepath = pathList.get(i);
// String str = "J:\\English\\EnglishHtml\\www.52en.com_0004_jfk_address.jpg.png.mp3";
endName = filepath.substring(filepath.lastIndexOf(".")+1);
if("txt".equalsIgnoreCase(endName) || "text".equalsIgnoreCase(endName)
|| "lrc".equalsIgnoreCase(endName)
){
System.out.println(">>>>>>>>>>" + filepath);
printUTFTxt(filepath);//打印
}
}

} catch (Exception ex) {
ex.printStackTrace();
}

System.out.println("bbbbbbbbb");
}

public static void printUTFTxt(String filePath){
try {
// String filePath = "D:\\English\\BBC\\20120415BBC.lrc";
String content = readTxt(filePath);
// System.out.println(content);
// File writename = new File("D:\\English\\BBC\\20120415BBC.lrc");
File writename = new File(filePath);
// 相对路径,如果没有则要建立一个新的output。txt文件
writename.createNewFile(); // 创建新文件
BufferedWriter out = new BufferedWriter(new
FileWriter(writename));
out.write(content); // \r\n即为换行
out.flush(); // 把缓存区内容压入文件
out.close(); // 最后记得关闭文件
}catch (Exception e) {
// TODO: handle exception
}
}

/**
* 获得文件夹下的文件路径
* @param path
* @return
*/
private static List<String> getFile(String path) {

List<String> l = new ArrayList<String>();
// get file list where the path has
File file = new File(path);
// get the folder list
File[] array = file.listFiles();

for (int i = 0; i < array.length; i++) {
if (array[i].isFile()) {

// only take file name
// System.out.println("^^^^^" + array[i].getName());
// take file path and name
// System.out.println("#####" + array[i]);
// take file path and name
System.out.println("*****" + array[i].getPath());
// if(array[i].){
l.add(array[i].getPath());
// }
}/*
* else if(array[i].isDirectory()){ //如果是目录
* getFile(array[i].getPath()); //继续查看 }
*/
}
return l;
}

/**
* 解析普通文本文件 流式文件 如txt http://lfl2011.iteye.com/blog/1930107 此人博客
*
* @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 + "\r\n");
}
br.close();
} catch (Exception e) {
e.printStackTrace();
System.err.println("读取文件:" + path + "失败!");
}
return content.toString();
}

/**
* http://lfl2011.iteye.com/blog/1930107 此人博客
*
* @param path
* @return
* @throws Exception
*/
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;
}

}
分享到:
评论

相关推荐

    GBK文件夹转化UTF-8 支持文件名

    这个程序需要遍历指定的GBK编码文件夹,读取每个文件的内容并将其转换为UTF-8编码,同时,对于文件名也要进行相应的编码转换。 在Java中,我们可以使用`java.nio.file`包中的`Files`类和`StandardCharsets`类来实现...

    批量转javaGBK编码文件到UTF-8

    5. **更新文件编码信息**:除了转换文件内容,还需要修改每个文件的编码声明,通常是位于Java源文件的第一行:`/* @(#)SourceFile.java gbk */` 更改为 `/* @(#)SourceFile.java UTF-8 */`。 在进行编码转换时,...

    文件编码转换器(支持utf-8、gb2321等多种编码互转)

    本工具名为“文件编码转换器”,专为解决不同编码之间的互转问题,尤其支持UTF-8和GB2321这两种常见的编码格式。 UTF-8是一种广泛使用的Unicode编码,它的特点是可变长度,能够表示Unicode字符集中所有的140多万个...

    去除BOM文件头工具

    描述中提到的"批量转换utf-8"意味着这个工具不仅能够去除BOM,还能进行批量的文件编码转换操作,将非UTF-8格式的文件转换为无BOM的UTF-8格式。这对于管理大量的源代码文件尤其有用,特别是在跨平台或多开发环境的...

    smartUpload上传文件包修改后解决中文乱码

    4. **JSP页面设置**:在JSP页面中,也需要设置页面编码为UTF-8,通常在页面顶部添加以下声明: ```jsp ;charset=UTF-8" language="java" %&gt; ``` 5. **数据库存储**:如果文件名需要存储到数据库中,确保数据库表字段...

    HYBUnicodeReadable.zip

    2. **UTF-8编码**:是最常用的Unicode编码,因为它在大多数情况下既节省空间又兼容ASCII。每个Unicode字符在UTF-8中可以用1到4个字节表示。 3. **UTF-16编码**:每个Unicode字符通常用2个字节表示,对于中文和其他...

    哈弗曼编码译码器 可以压缩中文

    编码时,对每个Unicode码点生成哈弗曼编码,解码时再转换回UTF-8。 总的来说,这个Java程序实现了对中文文本的哈弗曼编码和解码功能,提供了一种有效的文本压缩解决方案,尤其适合数据量较大的情况,有助于减少存储...

    Big5和GB码相互转换的源码

    在IT领域,字符编码是处理文本数据的基础,不同的编码标准用于表示...在实际开发中,除了Big5和GB码,还有UTF-8、Unicode等编码系统需要关注。熟悉这些编码的原理和转换方法,有助于解决多语言环境下的文本处理问题。

    新版Android开发教程.rar

    � Android 更像一款桌面环境为 Java 的 Linux 操作系统。有助于 Google 实现其 " 随时随地为每个人提供信 息 " 的企业战略。 HTC HTC HTC HTC Dream/G1 Dream/G1 Dream/G1 Dream/G1 具体配置 硬件 3.17 英寸 HVGA ...

    知识收集2

    Java默认使用UTF-8编码,但某些文件系统(如Windows)可能使用GBK或其他编码,这就需要在读写文件名时指定正确的编码。 3. **解决方案**:解决乱码问题通常需要在创建压缩流时明确指定编码。例如,可以使用`Charset...

    CDC-MQ数据库生僻字转码&#158;;

    1. **数据读取时的转换**:在使用CDC从ISO-8859-1数据库读取数据时,应先将数据转换为Unicode(如UTF-8)格式,然后再进行GBK编码。这样可以确保所有字符都能正确地被表示和处理。 2. **中间存储**:如果可能,可以...

    JCLHelp_delphi_delphijclfileutil_源码

    JCL支持多种文本编码之间的转换,如ANSI、Unicode、UTF-8等,这对于处理跨平台或多语言项目至关重要。 **9. 文件安全:** JCL还包含了处理文件权限和安全性的组件,如获取文件的安全描述符、设置文件访问控制列表...

    经典的问题

    当遇到Unicode编码问题时,需要检查文件编码是否正确设置,以及读取和写入数据时的编码方式是否一致。 **3. Eclipse简便设置** - **Eclipse**: 是一款流行的开源Java集成开发环境。对于简化配置,可以通过设置项目...

    手机 pdf 阅读器

    自定义问候语(系统路径下dictum.rc文件,格式参见jar包中的dictum.rc文件,保存时使用UTF-8编码,可写条目为0~9/a~z/A~Z,置空时表示不显示问候语) ·修正:  0键在各偏好中切换时亮度混乱的问题  部分手机上无法...

    Latin102组合

    了解Unicode以及它的实现,如UTF-8,对于处理全球化应用程序至关重要。 7. **编程实践**:在"Latin102组合"中,可能会涉及到如何在不同的编程语言(如Java、Python、C++等)中处理拉丁字符集的实践示例,包括字符串...

Global site tag (gtag.js) - Google Analytics