`
uule
  • 浏览: 6359249 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

文件转码、序列化

 
阅读更多

1、

// 获取生成的源文件 
StringBuilder dirStr = new StringBuilder();
dirStr.append(src).append(File.separator);
String[] pkgs = pkg.split("\\.");
for (String p : pkgs) {
	dirStr.append(p).append(File.separator);
}
File dir = new File(dirStr.toString());

@SuppressWarnings("unchecked")
Collection<File> javaFiles = FileUtils.listFiles(dir, new String[] { "java" }, true);
// 如果系统文件编码不是UTF-8将对其进行转码
String sysEncoding = System.getProperty("file.encoding");
if (!"UTF-8".equalsIgnoreCase(sysEncoding) && !"UTF8".equalsIgnoreCase(sysEncoding)) {
	logger.debug(sysEncoding + " -> UTF-8 begin...");
	
	//源文件转码
	detail.append("\u25c6\u6e90\u6587\u4ef6\u8f6c\u7801(").append(sysEncoding).append("->UTF-8)").append("\n");
	for (File javaFile : javaFiles) {
		detail.append("    ").append(javaFile.getAbsolutePath());
		try {
			String javaContent = FileUtils.readFileToString(javaFile, sysEncoding);
			FileUtils.writeStringToFile(javaFile, javaContent, "UTF-8");
			// 【成功】
			detail.append(" \u3010\u6210\u529f\u3011").append("\n");
		} catch (IOException e) {
			e.printStackTrace();
			
			// 【失败】
			detail.append(" \u3010\u5931\u8d25\u3011").append("\n");
			detail.append(ExceptionUtils.getStackTrace(e));
			log.setStatus(Constants.FAILURE);
			log.setDetail(detail.toString());
			return log;
		}
	}
	logger.debug(sysEncoding + " -> UTF-8 end...");
}

 

序列化:

// 实现序列化接口
detail.append("\u25c6\u5b9e\u73b0\u5e8f\u5217\u5316\u63a5\u53e3").append("\n");
logger.debug("implSerializableInterface start...");
for (File javaFile : javaFiles) {
	try {
		String javaContent = FileUtils.readFileToString(javaFile, sysEncoding);
		if(javaContent.indexOf("@XmlType") > 0 && javaContent.indexOf("import javax.xml.bind.annotation.XmlType;") > 0){
			detail.append("    ").append(javaFile.getAbsolutePath());
			
			logger.debug(javaFile.getAbsolutePath() + " implSerializableInterface...");
			
			javaContent = implSerializableInterface(javaContent);
			// 【成功】
			detail.append(" \u3010\u6210\u529f\u3011").append("\n");
			
			FileUtils.writeStringToFile(javaFile, javaContent, "UTF-8");
		}
	} catch (IOException e) {
		e.printStackTrace();
		
		// 【失败】
		detail.append(" \u3010\u5931\u8d25\u3011").append("\n");
		detail.append(ExceptionUtils.getStackTrace(e));
		log.setStatus(Constants.FAILURE);
		log.setDetail(detail.toString());
		return log;
	}
}

 

@XmlType(name = "ESB_YS_YS_InquiryEventsReferralsInfoSrvRequest", propOrder = {
    "msgHeader",
    "timefrom",
    "timeto",
    "usercode",
    "attribute1"
})
public class ESBYSYSInquiryEventsReferralsInfoSrvRequest  {}

 

 

序列化:

@XmlType(name = "ESB_YS_YS_InquiryEventsReferralsInfoSrvRequest", propOrder = {
    "msgHeader",
    "timefrom",
    "timeto",
    "usercode",
    "attribute1",
})
public class ESBYSYSInquiryEventsReferralsInfoSrvRequest  implements java.io.Serializable{}

 

/**
 * implements java.io.Serializable
 * 
 * @param javaContent
 * @return
 */
private String implSerializableInterface(String javaContent) {
	StringBuilder sb = new StringBuilder();
	sb.append(javaContent);
	int classIdx = sb.indexOf("public class ");
	if(classIdx > 0){
		sb.insert(sb.indexOf("{", classIdx), " implements java.io.Serializable");
	}
	return sb.toString();
}

 

 int java.lang.StringBuilder.indexOf(String str, int fromIndex)
	//Returns the index within this string of the first occurrence of the specified substring, starting at the specified index.
	//从fromIndex开始查找str的索引位置
	

 StringBuilder java.lang.StringBuilder.insert(int offset, String str)
	//Inserts the string into this character sequence. 
	//The characters of the String argument are inserted, in order, into this sequence at the indicated offset, moving up any characters originally above that position and increasing the length of this sequence by the length of the argument. If str is null, then the four characters "null" are inserted into this sequence. 
	//在offset前插入字符串str

 。。

 

分享到:
评论

相关推荐

    Struts2国际化转码小工具

    `native2ascii`工具可以将这些非ASCII字符转换为等效的Unicode转义序列,这样它们就可以在Java源代码或者配置文件中正确地被编译和解析。 本"Struts2国际化转码小工具"提供了对`native2ascii`工具的可视化界面,...

    ffmpeg指定文件夹批量转码mp4,mov,avi,mpg.rar

    用于调试和符号信息,而“.dll”文件(如“Newtonsoft.Json.dll”和“System.Net.Http.Formatting.dll”)是动态链接库,提供了额外的功能支持,如JSON序列化和HTTP格式处理。 在实际应用中,批量转换文件通常涉及...

    unicode 转码器 编码转换

    4. "安装软件.bat"和"下载说明.txt":这两个文件名表明它们可能包含安装步骤和说明,通常在Windows环境下,`.bat`文件是批处理脚本,用于自动化执行一系列命令;`.txt`文件则是纯文本文件,可能包含了下载和安装软件...

    中文转码工具

    5. **错误处理**:在转码过程中可能会遇到不合法的字节序列或无法映射的字符,这时工具需要提供策略来处理,如替换为问号或其他替代字符,或者停止转换并提示错误。 6. **用户交互**:为了方便用户,好的转码工具...

    各种字符转码

    字符转码在处理国际化和本地化问题时至关重要,尤其是在网页、邮件、数据库存储等领域。了解并正确处理字符转码,可以避免许多因编码不一致引发的问题。在实际开发中,需要对各种编码格式有深入理解,并能熟练运用...

    字库提取源码,以及转码源码

    转码源码可能包含解析不同编码格式的逻辑,以及将一个编码的文本序列转换为另一个编码的函数。在实际应用中,这些函数可能需要处理编码不兼容导致的乱码问题,或者在处理多语言混合文本时保持正确性。 MAKEFILE是...

    oled转码工具,可以将数字、文字以及图片通过工具转变成字码,然后显示

    在压缩包中的“oled转码工具”很可能是包含源代码、编译好的库文件、使用说明或示例项目的文件集合。使用者应当根据提供的文档或教程,将工具集成到他们的开发环境中,以便实现STM32或51单片机驱动OLED屏幕显示...

    视频测试序列264文件

    在实际应用中,264文件可以被各种多媒体框架和库如FFmpeg、libavcodec所支持,用于视频的编码、解码、转码和播放。此外,随着技术的发展,H.264/AVC已经进化到了H.265/HEVC(High Efficiency Video Coding)和AV1等...

    C++ 实现unicode到utf-8的转码

    本篇文章将深入探讨如何使用C++实现Unicode到UTF-8的转码过程。Unicode是一种通用的字符集,它包含了世界上几乎所有的字符和符号,而UTF-8是Unicode的一种广泛使用的编码方式。 Unicode是一个标准化的编码系统,其...

    文件编码转换

    "FormFileEncode.resx"是资源文件,可能包含了用户界面的本地化字符串和其他资源。 通过这样的工具,用户可以方便地处理各种编码的文件,避免因为编码不匹配导致的乱码问题,这对于处理多语言文本或者跨平台的数据...

    CXF,RESTEASY返回格式为JSON时,如果类型为String的值为数值时,JSON中引号消失的问题解决

    这两个文件可能与序列化过程有关。`XMLSerializer.java`可能是一个自定义的XML序列化类,而`DefaultConverter.java`可能是负责转换Java对象到其他格式(包括JSON)的默认转换器。如果你遇到的问题与这些文件相关,你...

    新建 DOC 文档_stata_doc_转码_

    Stata的DO文件(.do)是一种脚本文件格式,它记录了用户的命令序列,方便重复执行或共享分析步骤。在不同的操作系统或Stata版本之间,文件编码可能会有所不同,这可能导致在打开包含非ASCII字符(如中文字符)的.do...

    base64转码器.zip

    Base64编码是一种在网络上传输二进制数据时常用的编码方式,它将任意二进制数据转换成可打印的ASCII字符序列。这种编码方法源于早期的电子邮件系统,因为当时的邮件系统只能传输7位ASCII字符,而Base64则能够安全地...

    native2ascii.exe java的转码工具

    1. 资源文件:在创建Java国际化的资源文件(如`.properties`)时,`native2ascii.exe`用于将非ASCII字符转换为Unicode转义序列,保证资源文件在不同操作系统和编码环境下都能正确读取。 2. 字符串常量:当Java代码...

    Fiddle代理,app抓包转码!

    1. **Newtonsoft.Json.dll**:这是一个流行的.NET JSON序列化和反序列化库,Fiddler可能用它来处理JSON格式的数据。 2. **Xceed.Zip.v5.4.dll**、**Xceed.Compression.v5.4.dll**、**Xceed.FileSystem.v5.4.dll**、...

    C++ opencv ffmpeg图片序列化实现代码解析

    首先,提到的图片序列化可以理解为将一系列单独的图片按照一定的顺序和帧率组织成一个连续的视频流。在使用C++进行开发时,经常借助OpenCV库来处理图像数据,因为它提供了丰富的图像处理和操作功能。而FFmpeg则是一...

    读写视频文件,将视频文件读出存为jpg文件,将jpg文件写为视频文件.rar

    - `FFmpeg`库:FFmpeg是一个跨平台的解决方案,可以用来解码、编码、转码、流化、过滤音频和视频。使用它的C#封装库(如`Xabe.FFmpeg`),可以方便地读取和处理视频。 3. **保存视频为图片序列**: 当从视频中读...

    base64转码解密成明文加密成Java密文

    在IT领域,编码和解码是数据处理的重要环节,Base64是一种常见的编码方式,用于将二进制数据转换为可打印的ASCII字符序列。在Java编程中,Base64编码和解码常用于在网络传输或者存储时处理含有非ASCII字符的数据。本...

    pcm数据通过实施转码成g711

    PCM(Pulse Code Modulation,脉冲编码调制)是一种广泛使用的模拟音频信号数字化的方法,它将连续的音频信号转换为数字序列。在通信和音频处理领域,PCM是基础的数据格式,因为它能提供高质量的音频再现。G711则是...

    base64转Mp4工具.zip

    2. `Newtonsoft.Json.dll`:这是一个.NET库,提供了对JSON的强力支持,用于解析和序列化JSON数据,是工具中处理JSON输入的关键部分。 3. `base64תMp4.exe`:这是主执行文件,实际执行Base64转MP4转换的程序。 4. `...

Global site tag (gtag.js) - Google Analytics