JAVA 批量转换文件编码工具类

合集下载

java转码方法

java转码方法

java转码方法一、Java转码概述Java转码是指将一个字符集编码转换为另一个字符集编码的过程。

在实际开发中,我们经常需要进行字符集编码的转换,例如将UTF-8编码的字符串转换为GBK编码的字符串。

Java提供了多种方法来进行字符集编码的转换,本文将详细介绍Java中常用的几种转码方法。

二、Java字符集在介绍Java中的转码方法之前,我们先来了解一下Java中常用的字符集。

在Java中,每个字符都有一个对应的Unicode编码。

Unicode是一种国际标准字符集,它包含了世界上所有语言所使用的字符。

但是,在实际开发中,我们通常使用其他更加常用的字符集来表示字符串。

1. ASCIIASCII是一种最早出现的字符集,它只包含英文字母、数字和少量特殊符号(如空格、制表符等),共计128个字符。

由于其简单、易于处理,因此在计算机系统中得到广泛应用。

2. ISO-8859-1ISO-8859-1是一种西欧语言所使用的字符集,它包含了所有西欧语言所使用的字母、数字和符号。

ISO-8859-1共计256个字符。

3. GBKGBK是中国国家标准GB 2312扩展出来的全能字符集,它包含了简体中文、繁体中文、日文、韩文等多种语言所使用的字符。

GBK共计21886个字符。

4. UTF-8UTF-8是一种可变长度的Unicode编码,它可以表示世界上所有的字符。

UTF-8共计1114112个字符。

三、Java转码方法在Java中,常用的转码方法有以下几种:1. String.getBytes()String.getBytes()方法可以将一个字符串按照指定的字符集编码转换为字节数组。

例如,将一个UTF-8编码的字符串转换为GBK编码的字节数组:```String str = "你好";byte[] bytes = str.getBytes("GBK");```2. new String(byte[] bytes, Charset charset)new String(byte[] bytes, Charset charset)方法可以将一个字节数组按照指定的字符集解码成字符串。

stringescapeutils 中文编码

stringescapeutils 中文编码

stringescapeutils 中文编码在编程中,经常需要对文本进行编码和解码。

其中,字符串编码是一种重要的编码方式,其目的是将特殊字符转义为可读的文本形式。

在Java编程中,一个常用的字符串编码工具是stringescapeutils库。

这个库可以将字符串中的特殊字符进行转义,同时也可以进行反转义操作。

本文将对stringescapeutils的中文编码进行分步骤阐述。

第一步,导入库在使用stringescapeutils库之前,需要先导入该库。

在Java 中,可以使用import语句完成这一步操作。

示例代码如下:import mons.text.StringEscapeUtils;第二步,进行编码操作进行中文编码需要使用工具类中的escapeJava方法。

该方法可以将特殊字符转义为Unicode编码形式。

下面是一个具体的例子,将中文字符串进行编码:String original = "中文编码";String encoded = StringEscapeUtils.escapeJava(original);编码完成后,原始字符串中的中文会被转义为Unicode编码。

其中,中文字符“中”,使用\u4E2D的形式进行编码;“文”使用\u6587进行编码。

第三步,进行解码操作进行解码操作需要使用工具类中的unescapeJava方法。

该方法可以将Unicode编码形式的字符串,还原为原始字符串。

下面是一个具体的例子,对上述的encoded字符串进行解码:String decoded = StringEscapeUtils.unescapeJava(encoded);解码完成后,会得到一个还原的字符串“中文编码”。

需要注意的是,在解码操作中,如果存在字符编码错误,会产生IllegalArgumentException异常。

综上所述,stringescapeutils库提供了方便的字符串编码和解码操作。

java实现视频转码工具类

java实现视频转码工具类

java实现视频转码⼯具类废话不多说,直接上代码:这是转码⼯具类:package com.gcsoft.pyas.sysbase.utils;import com.gcsoft.pyas.AppProperties;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import ponent;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import java.util.UUID;/*** 视频转码⼯具类** @author jwc*/@Componentpublic class ConverVideoUtils {@Autowiredprivate AppProperties appProperties;protected final Logger logger = LoggerFactory.getLogger(this.getClass());/*** 转换视频格式** @param sourceVideoPath 视频地址* @return*/public String beginConver(String sourceVideoPath) {//转码格式String targetExtension = appProperties.getVideoFormat();//是否删除原⽂件Boolean isDeleteResult = appProperties.getIsDeleteResult();File fi = new File(sourceVideoPath);String fileName = fi.getName();//⽂件名不带扩展名String fileRealName = fileName.substring(0, stIndexOf("."));("接收到⽂件(" + sourceVideoPath + ")需要转换");if (!checkfile(sourceVideoPath)) {logger.error(sourceVideoPath + "⽂件不存在" + " ");return "";}long beginTime = System.currentTimeMillis();("开始转⽂件(" + sourceVideoPath + ")");String path = process(fileRealName, sourceVideoPath, targetExtension, isDeleteResult);if (StringUtil.isNotEmpty(path)) {("转换成功");long endTime = System.currentTimeMillis();long timeCha = (endTime - beginTime);String totalTime = sumTime(timeCha);("转换视频格式共⽤了:" + totalTime + " ");if (isDeleteResult) {deleteFile(sourceVideoPath);}return path;} else {return "";}}/*** 实际转换视频格式的⽅法** @param fileRealName ⽂件名不带扩展名* @param sourceVideoPath 原⽂件地址* @param targetExtension ⽬标视频扩展名* @param isDeleteResult 转换完成后是否删除源⽂件* @returnprivate String process(String fileRealName, String sourceVideoPath, String targetExtension, boolean isDeleteResult) { int type = checkContentType(sourceVideoPath);String path = "";if (type == 0) {//如果type为0⽤ffmpeg直接转换path = processVideoFormat(sourceVideoPath, fileRealName, targetExtension, isDeleteResult);} else if (type == 1) {//如果type为1,将其他⽂件先转换为avi,然后在⽤ffmpeg转换为指定格式String aviFilePath = processAVI(fileRealName, sourceVideoPath);if (aviFilePath == null) {// avi⽂件没有得到return "";} else {("开始转换:");path = processVideoFormat(aviFilePath, fileRealName, targetExtension, isDeleteResult);if (isDeleteResult) {deleteFile(aviFilePath);}}}return path;}/*** 检查⽂件类型** @param sourceVideoPath 原⽂件地址* @return*/private int checkContentType(String sourceVideoPath) {String type = sourceVideoPath.substring(stIndexOf(".") + 1).toLowerCase();// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)if (type.equals("avi")) {return 0;} else if (type.equals("mpg")) {return 0;} else if (type.equals("wmv")) {return 0;} else if (type.equals("3gp")) {return 0;} else if (type.equals("mov")) {return 0;} else if (type.equals("mp4")) {return 0;} else if (type.equals("asf")) {return 0;} else if (type.equals("asx")) {return 0;} else if (type.equals("flv")) {return 0;}// 对ffmpeg⽆法解析的⽂件格式(wmv9,rm,rmvb等),// 可以先⽤别的⼯具(mencoder)转换为avi(ffmpeg能解析的)格式.else if (type.equals("wmv9")) {return 1;} else if (type.equals("rm")) {return 1;} else if (type.equals("rmvb")) {return 1;}return 9;}/*** 检查⽂件是否存在** @param path ⽂件地址* @return*/private boolean checkfile(String path) {File file = new File(path);if (!file.isFile()) {return false;} else {return true;}}* 对ffmpeg⽆法解析的⽂件格式(wmv9,rm,rmvb等), 可以先⽤别的⼯具(mencoder)转换为avi(ffmpeg能解析的)格式.** @param fileRealName ⽂件名不带扩展名* @param sourceVideoPath 原⽂件地址* @return*/private String processAVI(String fileRealName, String sourceVideoPath) {/*** mencoder.exe的地址*/String menCoderPath = appProperties.getMencoderPath();/*** 转码后的存放视频地址 avi格式*/String videoFolder = appProperties.getUploadAndFormatPath();List<String> commend = new java.util.ArrayList<>();commend.add(menCoderPath);commend.add(sourceVideoPath);commend.add("-oac");commend.add("mp3lame");commend.add("-lameopts");commend.add("preset=64");commend.add("-ovc");commend.add("xvid");commend.add("-xvidencopts");commend.add("bitrate=600");commend.add("-of");commend.add("avi");commend.add("-o");commend.add(videoFolder + fileRealName + ".avi");try {ProcessBuilder builder = new ProcessBuilder();mand(commend);Process p = builder.start();doWaitFor(p);return videoFolder + fileRealName + ".avi";} catch (Exception e) {e.printStackTrace();return null;}}/*** 转换为指定格式* ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)** @param oldFilePath 源⽂件地址* @param fileRealName ⽂件名不带扩展名* @param targetExtension ⽬标格式扩展名 .xxx* @return*/private String processVideoFormat(String oldFilePath, String fileRealName, String targetExtension, Boolean isDeleteResult) { /*** ffmpeg.exe的地址*/String ffmpegPath = appProperties.getFfmpegPath();/*** 转码后的存放视频地址 mp4格式*/String targetFolder = appProperties.getUploadAndFormatPath();if (!checkfile(oldFilePath)) {logger.error(oldFilePath + "⽂件不存在");return "";}List<String> commend = new ArrayList<>();commend.add(ffmpegPath);commend.add("-i");commend.add(oldFilePath);commend.add("-vcodec");commend.add("mpeg4");commend.add("-q");commend.add("0");commend.add("-y");commend.add(targetFolder + fileRealName + targetExtension);try {ProcessBuilder builder = new ProcessBuilder();Process p = builder.start();doWaitFor(p);p.destroy();String videoPath = targetFolder + fileRealName + targetExtension;String path = this.processVideoFormatH264(videoPath, ffmpegPath, targetFolder, targetExtension, isDeleteResult);return path;} catch (Exception e) {e.printStackTrace();return "";}}/*** 将mpeg4转为h264编码为了⽀持播放器** @param path* @param ffmpegPath* @return*/private String processVideoFormatH264(String path, String ffmpegPath, String targetFolder, String targetExtension, Boolean isDeleteResult) { if (!checkfile(path)) {logger.error(path + "⽂件不存在");return "";}String newFilePath = targetFolder + UUID.randomUUID().toString() + targetExtension;List<String> commend = new ArrayList<>();commend.add(ffmpegPath);commend.add("-i");commend.add(path);commend.add("-vcodec");commend.add("h264");commend.add("-q");commend.add("0");commend.add("-y");commend.add(newFilePath);try {ProcessBuilder builder = new ProcessBuilder();mand(commend);Process p = builder.start();doWaitFor(p);p.destroy();if (isDeleteResult) {deleteFile(path);}return newFilePath;} catch (Exception e) {e.printStackTrace();return "";}}public int doWaitFor(Process p) {InputStream in = null;InputStream err = null;int exitValue = -1;try {in = p.getInputStream();err = p.getErrorStream();boolean finished = false;while (!finished) {try {while (in.available() > 0) {in.read();}while (err.available() > 0) {err.read();}exitValue = p.exitValue();finished = true;} catch (IllegalThreadStateException e) {Thread.sleep(500);}}} catch (Exception e) {logger.error("doWaitFor();: unexpected exception - " + e.getMessage());} finally {try {in.close();}} catch (IOException e) {(e.getMessage());}if (err != null) {try {err.close();} catch (IOException e) {(e.getMessage());}}}return exitValue;}/*** 删除⽂件⽅法** @param filepath*/public void deleteFile(String filepath) {File file = new File(filepath);if (file.delete()) {("⽂件" + filepath + "已删除");}}/*** 计算转码时间** @param ms* @return*/public String sumTime(long ms) {int ss = 1000;long mi = ss * 60;long hh = mi * 60;long dd = hh * 24;long day = ms / dd;long hour = (ms - day * dd) / hh;long minute = (ms - day * dd - hour * hh) / mi;long second = (ms - day * dd - hour * hh - minute * mi) / ss;long milliSecond = ms - day * dd - hour * hh - minute * mi - second* ss;String strDay = day < 10 ? "0" + day + "天" : "" + day + "天";String strHour = hour < 10 ? "0" + hour + "⼩时" : "" + hour + "⼩时";String strMinute = minute < 10 ? "0" + minute + "分" : "" + minute + "分";String strSecond = second < 10 ? "0" + second + "秒" : "" + second + "秒";String strMilliSecond = milliSecond < 10 ? "0" + milliSecond : ""+ milliSecond;strMilliSecond = milliSecond < 100 ? "0" + strMilliSecond + "毫秒" : ""+ strMilliSecond + " 毫秒";return strDay + " " + strHour + ":" + strMinute + ":" + strSecond + " "+ strMilliSecond;}}⼯具类⽤到的参数#视频上传和转码后存放的位置video.trans.coding=D:/PYAS/TMS/upload/video/#ffmpeg地址tool.ffmpeg.path=D:/FFmpeg/ffmpeg.exe#mencoder地址tool.mencoder.path=D:/FFmpeg/mencoder.exe#转码格式video.format=.mp4#是否删除源⽂件video.isdelete.result=false⼯具类⽤到的转码⼯具分别是: ffmpeg、mencoder到此这篇关于java实现视频转码的⽂章就介绍到这了,更多相关java视频转码内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章。

Java导出Excel完整例子+完整代码,使用easypoi导出Excel+通用工具类

Java导出Excel完整例子+完整代码,使用easypoi导出Excel+通用工具类

Java导出Excel完整例子+完整代码,使用easypoi导出Excel+通用工具类前言:在之前写Excel导入导出功能的时候,使用更多的可能是apache 的poi,相信用过poi的应该都会感觉poi使用起来还是有点点麻烦的,所以,如果你是:不太熟悉poi的、不想写太多重复太多的、只是简单的导入导出的。

那么相信我,使用easypoi绝对很适合。

easypoi,正如同它的名字一样,主打的功能就是容易,让一个没见接触过poi的人员,就可以很方便的写出Excel导出、Excel导入,通过简单的注解就可以完成以前复杂的写法。

so,今天就用easypoi来做一个导出Excel的完整案例,项目是SpringBoot的项目一、引入pom依赖<!-- excle导入导出依赖包 start --><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>3.2.0</version></dependency><de pendency><groupId>cn.afterturn</groupId><artifactId>easyp oi-web</artifactId><version>3.2.0</version></dependency><de pendency><groupId>cn.afterturn</groupId><artifactId>easyp oi-annotation</artifactId><version>3.2.0</version></dependenc y><!-- excle导入导出依赖包 end -->注意:有的文章或者博客可能说可以不用上边三个依赖这么麻烦,直接用 easypoi-spring-boot-starter 一个依赖就可以了但是,用easypoi-spring-boot-starter 这个可能会导致你的springboot项目jar包依赖冲突,所以还是推荐使用上边的三个依赖二、定义需要导出的实体对象Userimport cn.afterturn.easypoi.excel.annotation.Excel;import cn .afterturn.easypoi.excel.annotation.ExcelTarget;import lombok.D ata;import java.io.Serializable;import java.util.Date;/*** 导出对应的实体类** @author caoju*/@ExcelTarget("user")@Datapublic class User implements Serializable {@Excel(name = "id",width=7)private In teger id;@Excel(name = "姓名",width=15)private String name;@Excel(name = "性别",replace = { "男_1", "女_2" },width=10)private Integer sex;@Excel(name = "创建时间",exportFormat = "yyyy-MM-dd HH:mm:ss",width=25)private Date createTime;}三、Excel导出工具类和导出自定义样式类不要看下面的两个类这么长,好像多复杂似的别担心!就是个工具类而已啦~你懂的,直接ctrl c、ctrl v(我也懂的,热爱编程的你,最喜欢的就是这个 c v大法,简单粗暴,不多bibi!hia hia hia~~~)import cn.afterturn.easypoi.excel.ExcelExportUtil;import cn. afterturn.easypoi.excel.entity.ExportParams;import cn.afterturn.e asypoi.excel.entity.TemplateExportParams;import cn.afterturn.ea sypoi.excel.entity.enmus.ExcelType;import com.xiaoleilu.hutool.d ate.DateUtil;import com.xiaoleilu.hutool.util.StrUtil;import lomb ok.extern.slf4j.Slf4j;import ermodel.Workbo ok;import javax.servlet.http.HttpServletResponse;import java.io.I OException;import java.io.OutputStream;import .URLEnc oder;import java.util.ArrayList;import java.util.List;import java.uti l.Map;/*** Excel导出工具类** @author caoju*/@Slf4jpublic class ExcelUtils {/** 允许导出的最大条数 */private static final Integer EXPORT_EXCEL_MAX_NUM = 10000;/*** 导出Excel** @param workbook workbook流* @param fileName 文件名* @param response 响应*/public static void exportExcel(Workbook workbook, String file Name, HttpServletResponse response) {//给文件名拼接上日期fileName = fileName + StrUtil.UNDERLINE + DateUtil.today();//输出文件try (OutputStream out = response.getOutputStream()) {//获取文件名并转码String name = URLEncoder.encode(fileName, "UTF-8");//设置编码response.setCharacterEncoding("UTF-8");//设置http响应头告诉浏览器,以下载的形式处理响应的数据response.setContentType("application/force-download");//设置下载文件的默认名称response.setHeader("Content-Disposition", "attachment;filename=" + name + ".xlsx");//输出表格workbook.write(out);} catch (IOException e) {log.error("文件导出异常,详情如下:", e);} finally {try {if (workbook != null) {//关闭输出流workbook.close();}} catch (IOException e) {log.error("文件导出异常,详情如下:", e);}}}/*** 获取导出的 Workbook对象** @param title 大标题* @param sheetName 页签名* @param object 导出实体* @param list 数据集合* @return Workbook*/public static Workbook getWorkbook(Stri ng title, String sheetName, Class object, List list) {//判断导出数据是否为空if (list == null) {list = new ArrayList<>();}//判断导出数据数量是否超过限定值if (list.size() > EXPORT_EXCEL_MAX_NUM) {title = "导出数据行数超过:" + EXPORT_EXCEL_MAX_NUM + "条,无法导出、请添加查询条件后再进行导出!";list = new ArrayList<>();}//导出参数ExportParams exportParams = new ExportParams(title, sheetNa me, ExcelType.XSSF);//设置导出样式,可以不设置使用默认的样式,这里用的是自定义样式exportParams.setStyle(ExcelStyle.class);//输出Workbook流return ExcelExportUtil.exportExcel(exportParams, object, list);}/** * 获取导出的 Workbook对象** @param path 模板路径* @param map 导出内容map* @return Workbook*/public static Workbook getWorkboo k(String path, Map<String, Object> map) {//获取导出模板TemplateExportParams params = new TemplateExportParams(p ath);//设置导出样式params.setStyle(ExcelStyle.class);//输出Workbook流return ExcelExportUtil.exportExcel(params, map);}} import cn.afterturn.easypoi.excel.entity.params.ExcelExportE ntity;import cn.afterturn.easypoi.excel.entity.params.ExcelForEac hParams;import cn.afterturn.easypoi.excel.export.styler.ExcelExp ortStylerDefaultImpl;import cn.afterturn.easypoi.excel.export.sty ler.IExcelExportStyler;import ermodel.*;/*** Excel导出自定义样式类** @author caoju*/public class ExcelStyle extends ExcelExportSt ylerDefaultImpl implements IExcelExportStyler {private static fin al short STRING_FORMAT = (short) BuiltinFormats.getBuiltinFor mat("TEXT");private static final short FONT_SIZE_TEN = 10;privat e static final short FONT_SIZE_ELEVEN = 11;private static final sh ort FONT_SIZE_TWELVE = 12;/*** 大标题样式*/private CellStyle headerStyle;/*** 每列标题样式*/private CellStyle titleStyle;/*** 数据行样式*/private CellStyle styles;public ExcelStyle(Workbook workbook) {super(workbook);this.init(workbook);}/*** 初始化样式** @param workbook*/private void init(Workbook workbook) {/ /大标题样式this.headerStyle = initHeaderStyle(workbook);//每列标题样式this.titleStyle = initTitleStyle(workbook);//数据行样式this.styles = initStyles(workbook);}/*** 大标题样式** @param color* @return*/@Overridepublic CellStyle getHead erStyle(short color) {return headerStyle;}/*** 每列标题样式** @param color* @return*/@Overridepublic CellStyle getTitleS tyle(short color) {return titleStyle;}/*** 数据行样式** @param parity 可以用来表示奇偶行* @param entity 数据内容* @return 样式*/@Overridepublic CellStyle getStyles(boolean parity, ExcelExpo rtEntity entity) {return styles;}/*** 获取样式方法** @param dataRow 数据行* @param obj 对象* @param data 数据*/@Overridepublic CellStyle getStyles(Cell cell, int dataRow, Exc elExportEntity entity, Object obj, Object data) {return getStyles(t rue, entity);}/*** 模板使用的样式设置*/@Overridepublic CellStyle getT emplateStyles(boolean isSingle, ExcelForEachParams excelForEachParams) {return null;}/*** 初始化--大标题样式** @param workbook* @return*/private CellStyle initHeaderStyl e(Workbook workbook) {CellStyle style = getBaseCellStyle(work book);style.setFont(getFont(workbook, FONT_SIZE_TWELVE, tru e));return style;}/*** 初始化--每列标题样式** @param workbook* @return*/private CellStyle initTitleStyle( Workbook workbook) {CellStyle style = getBaseCellStyle(workbo ok);style.setFont(getFont(workbook, FONT_SIZE_ELEVEN, false)); //背景色 POI IndexedColors 编码与颜色枚举类对照 : https:///ju_362204801/article/details/1060791 71style.setFillForegroundColor(IndexedColors.PALE_BLUE.getInd ex());style.setFillPattern(FillPatternType.SOLID_FOREGROUND);re turn style;}/*** 初始化--数据行样式** @param workbook* @return*/private CellStyle initStyles(Wor kbook workbook) {CellStyle style = getBaseCellStyle(workbook); style.setFont(getFont(workbook, FONT_SIZE_TEN, false));style.se tDataFormat(STRING_FORMAT);return style;}/*** 基础样式** @return*/private CellStyle getBaseCellStyle(Workbook workb ook) {CellStyle style = workbook.createCellStyle();//下边框style.setBorderBottom(BorderStyle.THIN);//左边框style.setBorderLeft(BorderStyle.THIN);//上边框style.setBorderTop(BorderStyle.THIN);//右边框style.setBorderRight(BorderStyle.THIN);//水平居中style.setAlignment(HorizontalAlignment.CENTER);//上下居中style.setVerticalAlignment(VerticalAlignment.CENTER);//设置自动换行style.setWrapText(true);return style;}/*** 字体样式** @param size 字体大小* @param isBold 是否加粗* @return*/private Font getFont(Workbook workbook, short siz e, boolean isBold) {Font font = workbook.createFont();//字体样式font.setFontName("宋体");//是否加粗font.setBold(isBold);//字体大小font.setFontHeightInPoints(size);return font;}} 再说一下哈,上边面两个类虽然很长,但就是个工具类而已啦~ 不多说!你懂的!直接ctrl c、ctrl v四、测试导出方法的Controllerimport mon.collect.Lists;import com.qtyc.u tils.ExcelUtils;import org.springframework.web.bind.annotation. RequestMapping;import org.springframework.web.bind.annotat ion.RequestMethod;import org.springframework.web.bind.anno tation.RestController;import javax.servlet.http.HttpServletRespo nse;import java.util.Date;import java.util.List;/*** 导出Excel测试Controller** @author caoju*/@RestControllerpublic class ExcelE xportController {/*** 导出Excel测试*/@RequestMapping(value = "/exportExcelTest", method = Req uestMethod.GET)public void exportExcelTest(HttpServletRespon se response) {List<User> personList = this.findUser();ExcelUtils.e xportExcel(ExcelUtils.getWorkbook("用户信息列表", "用户信息", User.class, personList), "用户信息列表导出", response);}/*** 模拟数据库查询返回用户信息*/private List<User> findUser() {List<User> list = Lists.newArray List();User user = new User();user.setId(10);user.setName("张三");user.setSex(1);user.setCreateTime(new Date());list.add(user);Us er user1 = new User();user1.setId(26);user1.setName("李四");user1.setSex(1);user1.setCreateTime(new Date());list.add(user1 );User user2 = new User();user2.setId(28);user2.setName("王丽");user2.setSex(2);user2.setCreateTime(new Date());list.add(user2 );return list;}}五、测试浏览器输入:可以看到浏览器左下角弹出了下载窗口,自动下载了Excel打开下载的文件夹可以看到刚才下载的Excel打开Excel看下里边的内容可以看到咱们想要导出的内容已经导出了,其中的标题,表头,以及每行每列的背景颜色,字体等等都可以通过代码根据自己的需求来自定义的。

在Windows系统上自动转换文件编码

在Windows系统上自动转换文件编码

在Windows系统上自动转换文件编码随着数字化时代的到来,我们每天都在处理大量的电子文件,这些文件包括文档、图片、音频和视频等。

在处理这些文件时,我们可能会遇到一个常见的问题,即文件使用的编码方式与我们当前使用的编码方式不一致,导致文件无法正确显示或打开。

在Windows系统上,我们可以利用一些自动转换工具来解决这个问题,本文将介绍如何在Windows系统上自动转换文件编码。

自动转换文件编码的好处是它可以帮助我们快速而准确地解决编码不一致的问题,提高我们的工作效率和用户体验。

一、使用Notepad++进行文件编码转换Notepad++是一款开源的文本编辑器,拥有强大的编码转换功能。

以下是使用Notepad++进行文件编码转换的步骤:Step 1: 打开Notepad++编辑器首先,我们需要打开Notepad++编辑器,单击“文件”菜单,然后选择“打开”选项来选择要转换编码的文件。

Step 2: 选择要转换编码的文件在文件选择对话框中,选择要进行编码转换的文件,并单击“打开”按钮。

Step 3: 选择目标编码在Notepad++编辑器中,单击“格式”菜单,然后选择“转为ANSI”或“转为UTF-8”等目标编码格式。

Step 4: 保存转换后的文件选择目标编码后,我们需要保存转换后的文件。

单击“文件”菜单,然后选择“保存”选项,选择一个新的文件名称和位置,并单击“保存”按钮。

二、使用PowerShell脚本进行文件编码转换除了使用Notepad++进行文件编码转换外,我们还可以利用PowerShell脚本来实现自动转换。

以下是使用PowerShell脚本进行文件编码转换的步骤:Step 1: 创建PowerShell脚本首先,我们需要创建一个新的文本文件,将其扩展名改为.ps1,例如convert-encoding.ps1。

Step 2: 编写PowerShell脚本在convert-encoding.ps1文件中,我们可以使用以下代码进行编码转换:```$sourceFile = 'path/to/source/file.txt'$targetFile = 'path/to/target/file.txt'$sourceEncoding = 'EncodingName'$targetEncoding = 'EncodingName'$sourceContent = Get-Content -Path $sourceFile -Encoding $sourceEncoding$sourceContent | Out-File -FilePath $targetFile -Encoding $targetEncoding```请将“path/to/source/file.txt”替换为要转换编码的文件路径,将“EncodingName”替换为源编码和目标编码的名称。

Java框架中的代码生成工具介绍

Java框架中的代码生成工具介绍

Java框架中的代码生成工具介绍代码生成工具在Java框架中扮演着重要的角色,它们可以自动创建模板代码和基础结构,大大提高了开发效率。

本文将介绍几种常用的Java框架中的代码生成工具。

一、MyBatis-GeneratorMyBatis-Generator是一款强大的代码生成工具,主要用于生成与数据库表对应的实体类、DAO类、Mapper映射文件等。

它基于MyBatis框架,可以根据数据库的结构自动生成相应的代码。

使用MyBatis-Generator非常简单,只需编写一个XML配置文件,指定数据库连接信息、表名、生成代码的目录等,就可以自动生成所需的代码。

可以通过自定义插件来扩展其功能,满足不同项目的需求。

二、Spring RooSpring Roo是一个开源的Rapid Application Development(快速应用开发)工具,它可以快速生成基于Spring框架的Java应用的骨架代码。

Spring Roo可以通过命令行或者图形界面进行操作,提供了丰富的命令和选项来生成代码、配置文件等。

使用Spring Roo可以轻松地创建实体类、控制器、服务层等,并自动处理相关的依赖注入、持久化等问题。

它还支持自定义代码模板和插件,方便定制化开发。

三、JHipsterJHipster是一款用于生成现代化Java应用程序的代码生成器。

它结合了Java、Spring Boot、Angular/React/Vue.js等技术,可以快速构建全栈应用。

借助JHipster,开发人员可以选择不同的选项,如数据库类型、身份验证模块、前端框架等,然后通过一条命令生成项目的基础结构和代码。

生成的代码包括实体类、RESTful API、前端页面等,大大减少了开发工作量。

四、Apache VelocityApache Velocity是一款基于Java的模板引擎,也可以用作代码生成工具。

它使用简单且功能强大,可以根据自定义的模板生成任意文本文件。

java 常用编码格式

java 常用编码格式

java 常用编码格式
Java 中常用的编码格式有:
1.UTF-8:UTF-8 是 Java 的默认编码格式,也是目前使用最广泛的编码格式之一。

它是一种可变长度的编码方式,支持几乎所有的国家和地区字符。

2.GB2312:GB2312 是中国制定的国家标准编码,用于表示简体中文。

3.GBK:GBK 是 GB2312 的扩展,支持繁体中文和部分其他字符集。

4.ISO-8859-1:ISO-8859-1 是西欧语言的编码标准,支持包括英文在内的多种语言。

5.BIG5:BIG5 是中国台湾地区制定的国家标准编码,用于表示繁体中文。

在 Java 中,可以通过以下方式获取和设置编码格式:
java复制代码
// 获取默认编码格式
String defaultEncoding = System.getProperty("file.encoding");
// 设置编码格式
OutputStream outputStream = new FileOutputStream("file.txt");
outputStream.write(bytes, 0, bytes.length,
Charset.forName("UTF-8"));
其中,System.getProperty("file.encoding")可以获取 JVM 启动时设置的默认编码格式;Charset.forName("UTF-8")可以指定特定的编码格式,此处为 UTF-8。

java仅用30行代码就实现了视频转音频的批量转换

java仅用30行代码就实现了视频转音频的批量转换

java仅⽤30⾏代码就实现了视频转⾳频的批量转换本功能实现需要⽤到第三⽅jar包 jave,JAVE 是java调⽤FFmpeg的封装⼯具。

spring boot项⽬pom⽂件中添加以下依赖<!-- https:///artifact/ws.schild/jave-core --><dependency><groupId>ws.schild</groupId><artifactId>jave-core</artifactId><version>3.1.1</version></dependency><!-- 以下依赖根据系统⼆选⼀ --><!-- win系统平台的依赖 --><dependency><groupId>ws.schild</groupId><artifactId>jave-nativebin-win64</artifactId><version>3.1.1</version></dependency><!-- linux系统平台的依赖 --><dependency><groupId>ws.schild</groupId><artifactId>jave-nativebin-linux64</artifactId><version>3.1.1</version></dependency>Java单类实现代码,复制到Spring boot项⽬中,⽤idea编辑器主⽅法运⾏。

import ws.schild.jave.Encoder;import ws.schild.jave.EncoderException;import ws.schild.jave.MultimediaObject;import ws.schild.jave.encode.AudioAttributes;import ws.schild.jave.encode.EncodingAttributes;import java.io.File;import java.util.Arrays;public class VideoToAudio {//要输出的⾳频格式private static String outputFormat="mp3";/*** 获得转化后的⽂件名* @param sourceFilePath : 源视频⽂件路径* @return*/public static String getNewFileName(String sourceFilePath) {File source = new File(sourceFilePath);String fileName=source.getName().substring(0, source.getName().lastIndexOf("."));return fileName+"."+outputFormat;}/*** 转化⾳频格式* @param sourceFilePath : 源视频⽂件路径* @param targetFilePath : ⽬标⾳乐⽂件路径* @return*/public static void transform(String sourceFilePath, String targetFilePath) {File source = new File(sourceFilePath);File target = new File(targetFilePath);// 设置⾳频属性AudioAttributes audio = new AudioAttributes();audio.setCodec(null);// 设置转码属性EncodingAttributes attrs = new EncodingAttributes();attrs.setOutputFormat(outputFormat);attrs.setAudioAttributes(audio);try {// ⾳频转换格式类Encoder encoder = new Encoder();MultimediaObject mediaObject=new MultimediaObject(source);encoder.encode(mediaObject, target, attrs);System.out.println("转换已完成...");} catch (EncoderException e) {e.printStackTrace();}}/*** 批量转化⾳频格式* @param sourceFolderPath : 源视频⽂件夹路径* @param targetFolderPath : ⽬标⾳乐⽂件夹路径* @return*/public static void batchTransform(String sourceFolderPath, String targetFolderPath) {File sourceFolder = new File(sourceFolderPath);if(sourceFolder.list().length!=0){Arrays.asList(sourceFolder.list()).forEach(e->{transform(sourceFolderPath+"\\"+e, targetFolderPath+"\\"+getNewFileName(e));});}}public static void main(String[] args) {batchTransform("C:\\Users\\tarzan\\Desktop\\video","C:\\Users\\tarzan\\Desktop\\audio"); }}运⾏结果截图测试结果视频格式为mp4,⼤⼩约6.65MB,转为⾳频格式MP3,⼤⼩约1.60MB,转化时间1s左右。

java 注解名称和编码转换的方法

java 注解名称和编码转换的方法

java 注解名称和编码转换的方法Java中的注解是一种元数据,可以为程序添加更多的信息。

在使用中,有时需要将注解的名称和编码进行转换,本文将介绍如何进行这样的转换。

1. 注解的名称和编码在Java中,注解的名称和编码都是用字符串表示的。

注解的名称即为其类名,通常以@开头。

例如,@Override、@Deprecated、@SuppressWarnings等。

注解的编码是指使用注解时需要传递的值,也是一个字符串。

注解中的属性可以有默认值,在使用时可以不传递该属性的值,使用默认值。

如果需要传递属性的值,则需要按照属性名和属性值的形式进行传递。

例如,使用@Deprecated注解时,不需要传递任何值,直接使用@Deprecated即可。

而在使用@SuppressWarnings注解时,需要传递一个字符串参数,表示需要忽略的警告类型,例如@SuppressWarnings('unchecked')。

2. 将注解名称转换为编码将注解的名称转换为编码比较简单,只需要将@字符去掉即可。

例如,@Override的编码为Override,@SuppressWarnings的编码为SuppressWarnings。

在使用注解时,需要使用编码代替名称。

例如,使用@SuppressWarnings('unchecked')注解时,需要使用SuppressWarnings编码代替名称。

3. 将注解编码转换为名称将注解的编码转换为名称也很容易,只需要在编码前加上@字符即可。

例如,Override的名称为@Override,SuppressWarnings的名称为@SuppressWarnings。

在使用注解时,可以使用名称或编码。

例如,使用@SuppressWarnings('unchecked')和@SuppressWarnings(value='unchecked')是等价的。

java中把字符串转成任意格式的方法

java中把字符串转成任意格式的方法

在Java编程中,经常会遇到将字符串转换成不同格式的需求,例如将字符串转换成大写或小写、将字符串转换成日期格式、将字符串转换成特定编码格式等。

本文将介绍在Java中实现将字符串转换成任意格式的方法。

一、将字符串转换成大写或小写在Java中,可以使用String类的toUpperCase()方法将字符串转换成大写,也可以使用toLowerCase()方法将字符串转换成小写。

示例如下:```javaString str = "Hello, World!";String upperCaseStr = str.toUpperCase();String lowerCaseStr = str.toLowerCase();```二、将字符串转换成日期格式在Java中,可以使用SimpleDateFormat类将字符串转换成日期格式。

示例如下:```javaimport java.text.SimpleDateFormat;import java.util.Date;String str = "2021-10-01";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse(str);```三、将字符串转换成特定编码格式在Java中,可以使用String类的getBytes()方法将字符串转换成特定编码格式的字节数组,也可以使用String类的构造方法将字节数组转换成字符串。

示例如下:```javaString str = "Hello, 世界!";byte[] utf8Bytes = str.getBytes("UTF-8");String utf8Str = new String(utf8Bytes, "UTF-8");```四、其他类型转换在Java中,还可以将字符串转换成其他类型,例如将字符串转换成整数、将字符串转换成浮点数、将字符串转换成布尔值等。

java中文乱码解决方法

java中文乱码解决方法

java中文乱码解决方法1、解决文件中文乱码:1.1、修改文件字符编码:由于不同系统,比如Unix下用GBK格式编辑的文件,在Windows中就会乱码,此时可以使用Notepad++(记事本插件),将文件编码转换为系统默认的utf-8,8为Unicode编码。

1.2、修改系统语言及字符编码:此外,也可以通过改变操作系统的语言及字符编码,这种方法我们可以在控制面板-区域和语言的地方进行修改,再次点击其中的管理,在点击详细设置,这时候就可以看到字符集,将其设置为utf-8。

2、解决程序中文乱码:2.1、使用unicod-8格式编码:在这种情况下,一定要注意程序代码的编码格式,一定要以utf-8格式进行编码,而不是GBK,否则一样会出现乱码。

2.2、设置字符集:有时候,可以在程序中设置语言字符集,例如:response.setContentType("text/html;charset=utf-8");用于普通的JSP页面编码设置,也可以在web.xml中设置characterEncoding3、修改Tomcat的默认编码:可以修改tomcat的server.xml文件,将其默认编码为utf-8,在相应的位置加上URIEncoding="utf-8"。

4、前端乱码解决方法:也可以到浏览器中去修改编码,比如:Firefox浏览器中,可以按Ctrl + U,Chrome可以按Ctrl + U,IE下可以第一个菜单栏中点击View,然后选择Encoding,转换为相应的编码即可。

5、对数据库使用正确的编码:在不同的数据库中当我们有gbk的字符编码的时候,一定要创建数据库时候指定好字符编码,让数据库与整个程序保持一致,如果仅仅程序有编码时,数据库没有则容易出现乱码。

总之,我们在解决Java中文乱码的问题是要以系统- web页面-程序-数据库为关键点进行检查,以确保编码的一致性。

java 生成批量编码的方法

java 生成批量编码的方法

java 生成批量编码的方法Java 生成批量编码的方法方法一:使用循环逐一生成编码1.定义一个起始编码的字符串,如”000001”。

2.使用循环,在每次迭代中生成一个新的编码。

3.在循环中,使用字符串的格式化方法将当前的编码填充为指定长度的字符串,并保存到一个列表中。

4.循环结束后,返回保存了所有生成编码的列表。

public List<String> generateCodes(int count) {List<String> codes = new ArrayList<>();String startCode = "000001";String format = "%06d";for (int i = 0; i < count; i++) {String code = (format, (startCode) + i);(code);}return codes;}方法二:使用Apache Commons Lang库的方法1.导入Apache Commons Lang库。

2.定义一个起始编码的整数,如1。

3.使用循环,在每次迭代中生成一个新的编码。

4.在循环中,使用方法将当前的编码填充为指定长度的字符串,并保存到一个列表中。

5.循环结束后,返回保存了所有生成编码的列表。

import ;public List<String> generateCodes(int count) {List<String> codes = new ArrayList<>();int startCode = 1;int length = 6;for (int i = 0; i < count; i++) {String code = ((startCode + i), length, "0");(code);}return codes;}方法三:使用Java 8的IntStream和StringJoiner1.使用方法生成一个区间的整数,从起始编码到结束编码。

java 常用编码格式

java 常用编码格式

java 常用编码格式摘要:1.Java 编码简介2.常用编码格式a.UTF-8b.GBKc.UTF-16d.UTF-32正文:【Java 编码简介】Java 是一种广泛使用的编程语言,它支持多种编码格式。

编码是将字符从计算机内部表示形式转换为字节序列的过程,以便在计算机之间进行传输和存储。

在Java 中,编码格式用于处理字符串和字节数组。

正确选择编码格式对于确保数据在传输和存储过程中的正确表示至关重要。

【常用编码格式】Java 中常用的编码格式包括UTF-8、GBK、UTF-16 和UTF-32。

下面分别介绍这些编码格式的特点和用法。

【UTF-8】UTF-8(Unicode Transformation Format-8)是一种可变长度的Unicode 编码格式,它可以表示任何Unicode 字符。

UTF-8 编码使用1 到4 个字节来表示字符,其中ASCII 字符使用单个字节表示,而非ASCII 字符使用多个字节表示。

由于UTF-8 可以表示Unicode 字符集中的所有字符,并且具有向后兼容性,所以已经成为了Java 中默认的编码格式。

【GBK】GBK(Guo Biao Kan)是一种双字节的编码格式,它可以表示简体中文中的所有汉字。

GBK 编码使用2 个字节来表示字符,可以表示65536 个不同的字符。

由于GBK 可以表示简体中文中的所有汉字,所以在我国一些特定的场景下仍然被广泛使用。

【UTF-16】UTF-16 是一种可变长度的Unicode 编码格式,它可以表示任何Unicode 字符。

UTF-16 编码使用2 个字节来表示字符,其中ASCII 字符使用单个字节表示,而非ASCII 字符使用多个字节表示。

由于UTF-16 编码的字符集与UTF-8 相同,但占用的空间较大,所以在存储和传输数据时,UTF-8 编码格式更受欢迎。

【UTF-32】UTF-32 是一种可变长度的Unicode 编码格式,它可以表示任何Unicode 字符。

6款Java转C#的最佳工具

6款Java转C#的最佳工具

6款Java转C#的最佳工具在许多工程环境下要求把现有的Java项目转换成C#形式,手工操作显然是低效率的。

所以,今天我们就给大家介绍6款最佳转换工具,以帮助开发者提高工作效率:1. SharpenSharpen是Eclipse上帮助转换Java成C#最好用的工具/插件之一,它具有如下特点:1. 忽略类2. 忽略文件编制3.合并其他类4. 为.net properties/event提供翻译具体方法。

2. Java to C# Converter这是另一款Java转换成C#的最佳工具,它有如下优点:1. 准确且全面2. 将整个Java文件夹转换成C# 3. 每分钟可快速转换千行代码 4. 极其敏感且支持个性化用户 5. 易于使用 6. 产生有用的注释和警告。

3. Octopus它能解析Java源代码并转换成准确的C#代码,大多数情况下不用编辑手册就能编译,这在所有工具中是最好的编译工具。

4. XES – Java To C#点击链接,按照用户指南就能帮助你将Java源代码转换成C #。

5. Java Language Conversion Assistant 2.0该工具可以为想把应用程序移到.NET Framework平台上的开发者服务,自动将Java代码转换成Visual C# 。

它为使用Visual Studio .NET 2003的开发者提供了一种将Java语言应用程序转换到Visual C#及.NET Framework上的快速而又低成本的方法,从而使这些应用程序扩展至使用XML Web services并实现.NET开发者平台,包括、、Microsoft Windows窗体。

6. Varycode这是基于Web的跨平台源代码转换器工具,支持C#、Visual Basic、java、Python、C++、ruby等语言,编程人员无需安装任何软件即可在线转换。

java字符串的各种编码转换

java字符串的各种编码转换
gbk = test.changeCharset(iso88591,ChangeCharset.ISO_8859_1, ChangeCharset.GBK);
System.out.println("再把ISO-8859-1码的字符串转换成GBK码: " + gbk);
System.out.println();
if (str != null) {
//用默认字符编码解码字符串。
byte[] bs = str.getBytes();
//用新的字符编码生成字符串
return new String(bs, newCharset);
}
return null;
}
/**
public static final String UTF_16LE = "UTF-16LE";
/** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */
public static final String UTF_16 = "UTF-16";
/** 中文超大字符集 */
/** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */
public static final String UTF_16BE = "UTF-16BE";
/** 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序 */
ChangeCharset test = new ChangeCharset();
String str = "This is a 中文的 String!";

java 批量修改大量数据的方法

java 批量修改大量数据的方法

java 批量修改大量数据的方法下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!Java批量修改大量数据的方法在Java开发中,有时候我们需要批量修改大量数据,这可能是为了提高效率、修复错误或者进行数据转换。

java 常用编码格式

java 常用编码格式

java 常用编码格式摘要:一、Java编码格式简介1.Java支持的编码格式2.编码格式的重要性二、常用的Java编码格式1.UTF-82.UTF-163.UTF-16BE4.UTF-16LE5.ISO-8859-1三、编码格式转换1.编码转换2.解码转换四、编码格式设置1.设置编码格式的方法2.编码格式设置的注意事项五、总结正文:Java编码格式是Java程序设计中一个十分重要的环节,它涉及到Java程序在开发、编译、运行等各个环节中字符编码的处理。

在Java中,常用的编码格式主要有UTF-8、UTF-16、UTF-16BE、UTF-16LE和ISO-8859-1等。

UTF-8是一种广泛使用的编码格式,其最大的优点是兼容性好,不仅可以表示Unicode字符集中的所有字符,还可以表示ASCII字符集中的所有字符。

UTF-16是一种16位编码格式,可以表示Unicode字符集中的所有字符,但由于其对于ASCII字符集的编码效率较低,所以使用较少。

UTF-16BE和UTF-16LE是UTF-16的两种字节序形式,分别表示大端和小端字节序,主要应用于特定的场景。

ISO-8859-1是一种8位编码格式,主要应用于欧洲语言的表示。

在Java程序设计中,编码格式的转换是经常需要进行的操作。

编码转换是将字符串从一种编码格式转换为另一种编码格式,解码转换则是将字节数组或字符流从一种编码格式转换为另一种编码格式。

Java提供了许多编码转换的方法,如String类的getBytes()和String(byte[] bytes, Charset charset)方法,以及ByteBuffer类的put()和get()方法等。

在Java程序设计中,编码格式的设置也是十分重要的。

编码格式设置主要包括设置字符编码和字符集。

设置字符编码的目的是为了确保程序能够正确处理不同编码格式的字符串,设置字符集的目的是为了确保程序能够正确处理不同语言环境中的字符串。

Java字符编码工具类[UTF-8编码实现]

Java字符编码工具类[UTF-8编码实现]

Java字符编码工具类[UTF-8编码实现]import java.io.UnsupportedEncodingException;import .URLEncoder;import .URLDecoder;/***Title:字符编码工具类*Description:*Copyright: Copyright (c) 2005*Company: * @author: jeffzhu* @version 1.0*/public class CharTools {/*** 转换编码 ISO-8859-1到GB2312* @param text* @return*/public String ISO2GB(String text) {String result = "";try {result = new String(text.getBytes("ISO-8859-1"), "GB2312"); }catch (UnsupportedEncodingException ex) {result = ex.toString();}return result;}/*** 转换编码 GB2312到ISO-8859-1* @param text* @return*/public String GB2ISO(String text) {String result = "";try {result = new String(text.getBytes("GB2312"), "ISO-8859-1"); }catch (UnsupportedEncodingException ex) {ex.printStackTrace();}return result;}/*** Utf8URL编码* @param s* @return*/public String Utf8URLencode(String text) {StringBuffer result = new StringBuffer();for (int i = 0; i < text.length(); i++) {char c = text.charAt(i);if (c >= 0 && c <= 255) {result.append(c);}else {byte[] b = new byte[0];try {b = Character.toString(c).getBytes("UTF-8");}catch (Exception ex) {}for (int j = 0; j < b.length; j++) {int k = b[j];if (k < 0) k += 256;result.append("%" + Integer.toHexString(k).toUpperCase()); }}}return result.toString();}/*** Utf8URL解码* @param text* @return*/public String Utf8URLdecode(String text) {String result = "";int p = 0;if (text!=null && text.length()>0){text = text.toLowerCase();p = text.indexOf("%e");if (p == -1) return text;while (p != -1) {result += text.substring(0, p);text = text.substring(p, text.length());if (text == "" || text.length() < 9) return result;result += CodeT oWord(text.substring(0, 9));text = text.substring(9, text.length());p = text.indexOf("%e");}}return result + text;}/*** utf8URL编码转字符* @param text* @return*/private String CodeToWord(String text) {String result;if (Utf8codeCheck(text)) {byte[] code = new byte[3];code[0] = (byte) (Integer.parseInt(text.substring(1, 3), 16) - 256);code[1] = (byte) (Integer.parseInt(text.substring(4, 6), 16) - 256);code[2] = (byte) (Integer.parseInt(text.substring(7, 9), 16) - 256);try {result = new String(code, "UTF-8");}catch (UnsupportedEncodingException ex) {result = null;}}else {result = text;}return result;}public static boolean isValidUtf8(byte[] b, int aMaxCount) { int lLen = b.length, lCharCount = 0;for (int i = 0; i < lLen && lCharCount < aMaxCount; ++lCharCount) {byte lByte = b[i++]; //to fast operation, ++ now, ready for the following for(;;)if (lByte >= 0) continue; //>=0 is normal asciiif (lByte < (byte) 0xc0 || lByte > (byte) 0xfd)return false;int lCount = lByte > (byte) 0xfc ? 5 : lByte > (byte) 0xf8 ? 4 : lByte > (byte) 0xf0 ? 3 : lByte > (byte) 0xe0 ? 2 : 1;if (i + lCount > lLen) return false;for (int j = 0; j < lCount; ++j, ++i)if (b[i] >= (byte) 0xc0)return false;}return true;}/*** 编码是否有效* @param text* @return*/private boolean Utf8codeCheck(String text){String sign = "";if (text.startsWith("%e"))for (int i = 0, p = 0; p != -1; i++) {p = text.indexOf("%", p);if (p != -1)p++;sign += p;}return sign.equals("147-1");}/*** 是否Utf8Url编码* @param text* @return*/public boolean isUtf8Url(String text) {text = text.toLowerCase();int p = text.indexOf("%");if (p != -1 && text.length() - p > 9) {text = text.substring(p, p + 9);}return Utf8codeCheck(text);}/*** 测试* @param args*/public static void main(String[] args) {CharT ools charT ools = new CharTools();String url;url = "/search?hl=zh-CN&newwindow=1&q=%E4%B8%AD%E5%9B%BD%E5%A4%A 7%E7%99%BE%E7%A7%91%E5%9C%A8%E7%BA%BF%E5%85%A8%E6%96%87%E6%A3%80%E7%B4%A2&btnG=%E6%90%9C %E7%B4%A2&lr=";if(charTools.isUtf8Url(url)){System.out.println(charT ools.Utf8URLdecode(url));}else{System.out.println(URLDecoder.decode(url));}url = "/baidu?word=%D6%D0%B9%FA%B4%F3 %B0%D9%BF%C6%D4%DA%CF%DF%C8%AB%CE%C4%BC%EC %CB%F7&tn=myie2dg";if(charTools.isUtf8Url(url)){System.out.println(charT ools.Utf8URLdecode(url));}else{System.out.println(URLDecoder.decode(url));}}}。

classfiletransformer 示例

classfiletransformer 示例

classfiletransformer 示例摘要:1.classfiletransformer 简介2.classfiletransformer 的使用方法3.classfiletransformer 的示例4.classfiletransformer 的优势和应用场景正文:classfiletransformer 是一个用于处理Java 类文件的工具,它可以将Java 字节码转换为其他格式,如JSON、XML 等。

classfiletransformer 具有丰富的功能和易于使用的界面,使得开发者可以轻松地转换和处理Java 类文件。

使用classfiletransformer 非常简单。

首先,需要下载并安装classfiletransformer。

然后,通过命令行或GUI 界面启动classfiletransformer,指定输入的Java 类文件和输出格式,然后点击“转换”按钮即可。

classfiletransformer 支持多种输出格式,如JSON、XML、CSV 等,用户可以根据需要选择。

下面是一个classfiletransformer 的示例。

假设我们有一个名为“HelloWorld.class”的Java 类文件,我们想要将其转换为JSON 格式。

我们可以使用以下命令行命令来实现:```java -jar classfiletransformer.jar -i HelloWorld.class -o JSON```这将把“HelloWorld.class”转换为JSON 格式,并输出到屏幕上。

如果想要将输出保存到文件中,可以使用“-o”选项指定输出文件路径。

classfiletransformer 的优势在于它可以方便地处理Java 类文件,尤其是对于开发人员来说,无需深入了解Java 类文件的内部结构即可进行转换。

此外,classfiletransformer 还具有高效、稳定、易于使用等特点,使得开发者可以快速地完成Java 类文件的转换和处理。

java批量修改文件后缀名方法总结

java批量修改文件后缀名方法总结

java批量修改⽂件后缀名⽅法总结突然需要改⼀堆⽂件的后缀名,所以想编程解决,话不多说直接上代码javaimport java.io.File;import java.util.Scanner;public class FileEdit {public static void renameFiles(String path, String oldExt, String newExt) {File file = new File(path);if (!file.exists()) {System.err.println("⽂件路径不存在!");return;}File[] files = file.listFiles();if (files.length <= 0) {System.err.println("当前路径⽂件不存在!");return;}for (File f : files) {if (f.isDirectory()) {renameFiles(f.getPath(), oldExt, newExt);} else {String name = f.getName();if (name.endsWith("." + oldExt)) {name = name.substring(0, stIndexOf(".") + 1);name += newExt;f.renameTo(new File(f.getParent() + "\\" + name));}}}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输⼊要修改⽂件后缀名的⽂件夹:");String path = sc.nextLine();System.out.println("请输⼊修改前的后缀名:");String oldExt = sc.nextLine();System.out.println("请输⼊修改后的后缀名:");String newExt = sc.nextLine();renameFiles(path, oldExt, newExt);System.out.println("操作完成");}}其他⽅法在⽹上查了下,发现还有cmd命令可以解决,⽐如将txt后置改为7z,那么在你需要修改的⽬录运⾏cmd然后输⼊命令ren *.txt *.rar,就可以将所有txt结尾的⽂件进⾏修改;此外可以将本命令保存为bat脚本⽂件,双击进⾏运⾏。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JA V A 批量转换文件编码工具类
package hy;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class FileUtils extends mons.io.FileUtils{
private static final String ENCODE_GBK = "GBK";
private static final String ENCODE_UTF8 = "UTF-8";
public static void convertGBK2UTF8(File file){
convertFileEncode(file, ENCODE_GBK, ENCODE_UTF8);
}
public static void convertUTF82GBK(File file){
convertFileEncode(file, ENCODE_UTF8, ENCODE_GBK);
}
public static void convertFileEncode(File file, String fromEncode, String toEncode){ try {
String str = readFileToString(file, fromEncode);
writeStringToFile(file, str, toEncode);
} catch (IOException e) {
System.out.println("Convert failed. File not exsit?");
e.printStackTrace();
}
}
public static String readFile(String filePath, String encode){
String fileContent = "";
try {
FileInputStream fis = new FileInputStream(filePath);
InputStreamReader isr = new InputStreamReader(fis, encode);
BufferedReader br = new BufferedReader(isr);
StringBuffer sb = new StringBuffer();
for(String line = br.readLine(); line != null; line = br.readLine()){
sb.append(line);
}
fileContent = sb.toString();
br.close();
isr.close();
fis.close();
} catch (FileNotFoundException e) {
System.out.println("File not exist:"+filePath);
} catch (IOException e) {
e.printStackTrace();
}
return fileContent;
}
public static String saveFile(String fileContent, String encode, String savePath){ try {
FileOutputStream fos = new FileOutputStream(savePath);
OutputStreamWriter osw = new OutputStreamWriter(fos, encode);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(fileContent);
bw.close();
osw.close();
fos.close();
} catch (FileNotFoundException e) {
System.out.println("File not exist:"+savePath);
} catch (IOException e) {
e.printStackTrace();
}
return fileContent;
}
public static synchronized void convertDirectory(File dir) throws IOException { if (!dir.exists() && !dir.isDirectory()) {
throw new IOException("[" + dir + "] not exsit or not a Directory");
}
convert(dir);
}
public static void convert(File dir){
if (dir.canRead() && dir.canWrite()) {
if (dir.isDirectory()) {//Directory
String[] files = dir.list();
if (files != null) {
for (int i = 0; i < files.length; i++) {
convert(new File(dir, files[i]));//递归
}
}
} else {//File
convertGBK2UTF8(dir);
}
}
}
public static void main(String[] args) throws IOException { // File f = new File("c:/GenericAction.java");
// convertGBK2UTF8(f);
long t1 = System.currentTimeMillis();
File src = new File("C:\\myLucene");
convertDirectory(src);
long t2 = System.currentTimeMillis();
System.out.println("转换完成,用时:"+(t2-t1)/1000); }
}。

相关文档
最新文档