123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- package com.toolkit.file.encode.frame.tools;
- import java.awt.Image;
- import java.awt.image.BufferedImage;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import com.sun.image.codec.jpeg.JPEGCodec;
- import com.sun.image.codec.jpeg.JPEGImageEncoder;
- public class ConverEncoding{
- /**
- * 1、修改文件的编码方式,比如原先的编码是big5,我把它转换成UTF-8。
- * 2、拷贝图片,读取图片然后把文件放到指定的目录。(这个地方可以扩展,我是用一个图片缩放类
- * ,修改过来的,因此这个部分可以修改为具有图片缩放功能的模块)。 3、网页编码方式替换,我读取文件的时候直接把网页指定的编码也给替换成UTF-8了
- */
- static String strDealObj = "C:\\temp\\javascript";
- static String strNewPath = "C:\\temp\\javascriptNew";
- static String[] strCanDoExtName = { "jpg", "jpeg", "gif", "png" };
- /**
- * @param args
- * @throws Exception
- */
- public static void main(String[] args) throws Exception {
- File objFile = new File(strDealObj);
- doDealWithObj(objFile, strNewPath);
- }
- private static void doDealWithObj(File objFile, String strNewPath) throws Exception {
- if (objFile.isDirectory()) {
- File[] objFiles = objFile.listFiles();
- for (int i = 0; i < objFiles.length; i++) {
- if (objFiles[i].isDirectory()) {
- doDealWithObj(objFiles[i], createPathName(strNewPath, objFiles[i].getName()));
- } else {
- // System.out.println(objFiles[i].getPath());
- // System.out.println(strNewPath);
- // System.out.println("-------------------");
- judgeFile(objFiles[i], strNewPath, "big5", "UTF-8");
- }
- }
- } else {
- // System.out.println(objFile.getPath());
- // System.out.println(strNewPath);
- // System.out.println("================");
- judgeFile(objFile, strNewPath, "big5", "UTF-8");
- }
- }
- private static String createPathName(String strPathName, String strFolderName) {
- if (strPathName.lastIndexOf("\\") == strPathName.length()) {
- return strPathName + strFolderName;
- } else {
- return strPathName + "\\" + strFolderName;
- }
- }
- private static void judgeFile(File oldFile, String newFilePath, String strOldEncoding,
- String strNewEncoding) throws Exception {
- File fileNewPath = new File(newFilePath);
- if (!fileNewPath.exists()) {
- fileNewPath.mkdirs();
- }
- String strFileName = oldFile.getName();
- String strExt = getFileExtension(strFileName);
- int intExt = isBelongPic(strExt, strCanDoExtName);
- if (intExt != -1) {
- copyPic(oldFile, newFilePath, intExt);
- } else {
- copyFile(oldFile, newFilePath, "big5", "UTF-8");
- }
- }
- private static void copyFile(File oldFile, String newFilePath, String strOldEncoding,
- String strNewEncoding) throws Exception {
- FileInputStream fileInputStream = null;
- InputStreamReader inputStreamRead = null;
- BufferedReader bufferRead = null;
- BufferedWriter newFileBW = null;
- OutputStreamWriter outputStreamWriter = null;
- FileOutputStream fileOutputStream = null;
- // boolean blnCopyOK = false;
- try {
- fileInputStream = new FileInputStream(oldFile);
- inputStreamRead = new InputStreamReader(fileInputStream, strOldEncoding);
- bufferRead = new BufferedReader(inputStreamRead);
- File copyFile = new File(createPathName(newFilePath, oldFile.getName()));
- fileOutputStream = new FileOutputStream(copyFile, false);
- outputStreamWriter = new OutputStreamWriter(fileOutputStream, strNewEncoding);
- newFileBW = new BufferedWriter(outputStreamWriter);
- String strTSVLine = "";
- while ((strTSVLine = bufferRead.readLine()) != null) {
- if (strTSVLine.equals("")) {
- continue;
- }
- newFileBW.write(strTSVLine.replaceAll(" charset=big5", " charset=UTF-8") + "\r\n");
- }
- // blnCopyOK = true;
- } finally {
- if (bufferRead != null)
- bufferRead.close();
- // if (blnCopyOK) {
- // oldFile.delete();
- // }
- if (newFileBW != null) {
- newFileBW.flush();
- newFileBW.close();
- }
- }
- }
- private static void copyPic(File oldFile, String newFilePath, int intPicType) throws Exception {
- String strFileName;
- strFileName = oldFile.getName(); // 獲得文件名
- // 獲得文件擴展名
- // String strExtType = getFileExtension(strFileName);
- // *圖片文件處理
- // File imagefile = new File(strFileName); // 讀入文件
- Image src_image = javax.imageio.ImageIO.read(oldFile);
- // 獲得圖片文件的高度和寬度
- int width = src_image.getWidth(null); // 得到源圖寬
- int height = src_image.getHeight(null);
- // 在申請的圖片緩存區中重繪圖片
- BufferedImage buf_image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
- // 繪制縮小后的圖
- buf_image.getGraphics().drawImage(src_image, 0, 0, width, height, null);
- // 重新建立文件輸出流,并編碼
- FileOutputStream out = new FileOutputStream(createPathName(newFilePath, strFileName));
- // 輸出到文件流
- JPEGImageEncoder jpg_encoder = JPEGCodec.createJPEGEncoder(out);
- jpg_encoder.encode(buf_image);
- // 使用JPEG編碼文件
- // 關閉文件流
- out.close();
- }
- public static String getFileExtension(String fileName) {
- return fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
- }
- private static int isBelongPic(String strFileExt, String[] strCanDoPic) {
- for (int i = 0; i < strCanDoPic.length; i++) {
- if (strFileExt.equalsIgnoreCase(strCanDoPic[i])) {
- return i;
- }
- }
- return -1;
- }
- }
|