- 浏览: 219532 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
Wangwei86609:
非常好的规则引擎框架,支持决策树和多线程运行规则https:/ ...
规则引擎 -
hzxlb910:
真详细,收藏哈
maven setting.xml配置说明 -
东方胜:
[b][/b]
脚本语言 Tcl -
345161974:
hyw520110 写道345161974 写道这个Visua ...
Visual Tcl Binary 完整版(完美中文支持) -
hyw520110:
345161974 写道这个Visual Tcl Binary ...
Visual Tcl Binary 完整版(完美中文支持)
工程项目太多,各工程或各文件编码不统一时,可运行本工具类,把工作目录下,指定类型的文件,转换成指定的编码格式
源码:
import info.monitorenter.cpdetector.io.CodepageDetectorProxy; import info.monitorenter.cpdetector.io.JChardetFacade; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 文本文件转码 * @author Howard.He */ public class TransFileCoding { private static final Logger logger = LoggerFactory.getLogger(TransFileCoding.class); public static void main(String[] args) { String dirPath = "E:/workspace/"; String suffix = ".java"; transformEncoding(dirPath, suffix, "UTF-8"); } /** * 文件转码 (文本文件) * * @param dirPath * 工程路径 * @param suffix * 要转码文件的后缀(.java) * @param newEncoding * 转换的编码 */ public static void transformEncoding(String dirPath, String suffix, String newEncoding) { List<File> list = getFileList(null, dirPath, suffix); if (null != list && !list.isEmpty()) { for (File f : list) { String encoding = getFileCharacterEnding(f); newEncoding = isEmpty(newEncoding) ? getFileCharacterEnding(f) : newEncoding; if (!encoding.equals(newEncoding)) { StringBuilder content = readContent(f, encoding); logger.info("convert file encoding from {} to {}" ,new Object[]{encoding,newEncoding}); write(f, content, newEncoding); } else { logger.debug("srcEncoding({})==dstEncoding({}) skipped f: {}", new Object[] { encoding, newEncoding, f.toString() }); } } } } /** * 取文件的编码格式 * 异常时默认UTF-8 * * @param file * @return */ @SuppressWarnings("deprecation") public static String getFileCharacterEnding(File file) { String fileCharacterEnding = "UTF-8"; CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance(); detector.add(JChardetFacade.getInstance()); try { Charset charset = detector.detectCodepage(file.toURL()); if (charset != null) fileCharacterEnding = charset.name(); } catch (Exception e) { e.printStackTrace(); } return fileCharacterEnding; } /** * 获取指定路径下的特定类型的文件集 * * @param list * @param dirPath * @param suffix * @return */ public static List<File> getFileList(List<File> list, String dirPath, String suffix) { File dir = new File(dirPath); if (dir.exists()) { File[] files = dir.listFiles(); if (null == list) list = new ArrayList<File>(); for (File f : files) { String name = f.getName(); if (f.isDirectory() && !name.equals(".svn")) getFileList(list, f.getPath(), suffix); else if (f.isFile() && name.endsWith(suffix)) list.add(f); } } return list; } public static StringBuilder readContent(File f, String encoding) { return readContent(f, encoding, "\n"); } /** * 读取文件内容 * * @param f * @param encoding * @return */ public static StringBuilder readContent(File f, String encoding, String enter) { StringBuilder builder = new StringBuilder(); try { encoding = encoding == null ? getFileCharacterEnding(f) : encoding; String data = null; BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f), encoding)); while ((data = br.readLine()) != null) { builder.append(isEmpty(enter) ? data : data + enter); } } catch (Exception e) { e.printStackTrace(); } return builder; } /** * 写入文件内容 * * @param f * @param content * @param newEncoding */ private static void write(File f, StringBuilder content, String newEncoding) { try { logger.debug("write file:{}",f); logger.debug(content.toString()); OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(f), newEncoding); writer.write(content.toString()); writer.close(); } catch (Exception e) { e.printStackTrace(); } } private static boolean isEmpty(String str) { return null == str || "".equals(str); } }
取文件编码格式,依赖cpdetector ,可到 http://cpdetector.sourceforge.net/ 下载lib包
使用maven时,直接添加依赖信息:
<dependency> <groupId>org.mozilla.intl</groupId> <artifactId>chardet</artifactId> <version>1.4.2</version> <scope>test</scope> </dependency> <dependency> <groupId>info.monitorenter</groupId> <artifactId>cpdetector</artifactId> <version>1.0.7</version> <scope>test</scope> </dependency>
发表评论
-
pushlet
2012-05-31 14:56 1170基于pushlet的文件监控系统的研究与实现 http ... -
@Transactional spring 配置事务
2012-04-25 11:15 2091@Transactional spring 配置事 ... -
Spring的组件自动扫描机制
2012-04-09 17:47 0Spring将所有的bean都纳入到IOC中创建、管理和维护。 ... -
struts&rest
2012-04-03 00:11 794深入浅出REST http://www.infoq. ... -
安装和使用SpringIDE-------III
2011-07-29 10:40 8402. 编写类文件 · ... -
安装和使用SpringIDE-------II
2011-07-29 10:39 683显示图表,如图: 发表于 @ 2006 ... -
安装和使用SpringIDE
2011-07-29 10:36 1129这篇文章谈谈如何安装与使用SpringIDE。作为辅助Sp ... -
使用AJDT简化AspectJ开发
2011-07-29 10:05 1037面向方面编程(AOP)可用来解决当今的 许多 应用需求 ... -
利用Apache的CLI来处理命令行
2011-05-16 17:02 981CLI是Jakarta Commons中的一个子类。如果你仅仅 ... -
CGlib简单介绍
2011-04-28 08:37 845CGlib概述:cglib(Code Generation L ... -
Java ClassLoader
2011-04-25 18:24 1004当Java编译器编译好.class ... -
Template模式与Strategy模式
2011-04-20 16:23 672template method模式和stra ... -
Ibatis读写CLOB数据
2011-03-21 14:21 1042转载:http://www.iteye.com/topic/7 ... -
轻松构建和运行多线程的单元测试
2011-03-18 22:09 975背景 并行程序 并行程序是指控制计算机系统中两个或多个分别 ... -
Cairngorm3中文简介
2011-03-18 22:07 1023官方原文地址:http://opensource.adobe. ... -
ibator改造之返回数据库注释和数据库分页
2010-12-23 17:24 2227转载:http://www.iteye.com ... -
quatrz 任务监控管理 (2)
2010-10-28 23:28 1443在《Quartz 任务监控管理 (1)》http://www. ... -
Quartz任务监控管理 (1)
2010-10-28 23:27 1298转载:http://sundoctor.iteye.com/b ... -
Quartz 在 Spring 中如何动态配置时间
2010-10-28 23:25 1683转载: http://sundoctor.iteye.com ... -
使用org.apache.commons.net.ftp包开发FTP客户端,实现进度汇报,实现断点续传,中文支持
2010-10-28 21:09 1024使用org.apache.commons.net.ftp包开发 ...
相关推荐
实际项目中有很多文件的编码是非utf编码,当多种编码的文件相互包含时,会出现乱码。 应实际需求,特写一个java程序,将非utf8编码的文件,转换为utf8编码。省却了一个文件一个文件修改的...可快速批量的见文件转码。
天翼网关F452配置文件转码软件
标题中提到的“批量文件转码工具,支持GBK,UTF-8转换”就是这样一个实用工具,特别适合那些需要在GBK和UTF-8之间频繁切换的用户,例如网站开发者、数据处理人员等。 在Windows系统下使用该工具,用户可以轻松解决...
批量文件转码工具,正如标题和描述所提到的,是用来解决大量文件从一种编码格式转换到另一种格式的问题。在Windows环境下,这类工具通常具有用户友好的界面,允许用户选择待转换的文件或文件夹,设定目标编码格式,...
文件转码在IT行业中是一项常见的操作,特别是在处理各种格式的文档和媒体时。"文件转码软件"是指能够将一种文件格式转换成另一种格式的工具,以满足不同平台、设备或应用程序的需求。在这个场景中,描述提到的"对...
监控视频.dav文件转码工具,支持转换为多种格式(MP4、AVI、WMV、MXF、GIF、DPG、MTV、AMV、SWF等多种格式,应有尽有。)。本软件为英文版软件,没有中文版,介意的话不要下载,避免浪费积分。也可当播放器使用,...
批量文件转码工具 批量文件转码工具 批量文件转码工具 批量文件转码工具 批量文件转码工具
文件转码工具就是为了解决这个问题而设计的,它们可以帮助用户将文件从一种字符编码格式转换为另一种,以确保文本的正确显示和处理。在这个场景中,我们讨论的是一个专门用于批量转换的工具,它支持GBK和UTF-8这两种...
华为 cfg转码 可利用此软件查看华为猫cfg文件
支持任意纯文本文件转码(解决任意纯文本文件乱码问题),其能够处理的文件包括但不限于以下几种: 纯文本文件 (.txt,.csv ) 这些文件通常只包含纯文本,没有特殊的格式或样式。 编程语言的源代码文件 Python (.py...
比如图2的转码规则就是对项目的jsp文件,不管原来是什么编码,统一转为UTF-8编码,并且同时转换文件内容。可以点击右边的Add /Remove按钮来增加/删除规则。最后点击Apply来保存设置。 step3. 转码 在设置了转码规...
在MFC中实现文件转码,首先需要读取源文件,然后根据源文件的原始编码进行解码,再按照目标编码进行编码,最后将结果写入新文件。在这个过程中,`CFile`类是用于文件操作的基础,而`CString`类则用于处理字符串。 ...
在IT行业中,尤其是在Android开发中,处理文件编码格式与文件转码是常见的任务。编码格式决定了文本文件中字符的表示方式,不同的编码如ASCII、UTF-8、GBK等有着不同的规则。了解并能够正确处理文件编码对于确保程序...
【音视频文件转码SDK详解】 音视频转码是数字媒体处理中的关键技术,它涉及到将原始的音视频数据转换成不同编码格式,以适应不同的播放设备、网络环境或存储需求。这里提到的“强大的音视频文件转码SDK”,显然是一...
"GBK_UTF8批量文件转码工具"是一个专门用于解决编码转换问题的实用程序,它能够帮助用户将GBK编码的文件批量转换为UTF-8编码。在开发过程中,尤其是使用Eclipse这样的集成开发环境时,如果源代码文件的编码与IDE的...
在本项目中,"文件转码UTF8工具"是一个用C#编写的Windows桌面应用程序(WinForm),其核心功能是帮助用户批量将指定文件夹中的文件转码为UTF-8格式。这个工具不仅方便了开发者和普通用户对文本文件的管理,还提供了...
在Java开发中,音频文件转码是一项常见的任务,特别是在多媒体应用、音频处理或者网络音频传输等领域。本项目基于Jave开源框架,它提供了一个高效且易于使用的API来处理音频编码和解码工作。Jave(Java Audio Video ...
在当今数据处理领域,将数据从数据库导出到CSV文件并进行转码是一种常见的需求,特别是在使用MySQL数据库时。本内容将详细介绍如何使用mysql命令行工具导出数据为CSV格式,并结合iconv命令行工具进行编码转换。同时...