java实现同步工程目录下所有语言字符串

xiaoxiao2021-02-28  35

java实现同步工程目录下所有语言字符串,以英语为参照,其他语言字符串中缺失的,就会补全英文字符串。

https://download.csdn.net/download/u012539700/10289397  jar文件下载,也可自己编译

package com.test.string;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.ObjectInputStream.GetField;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class StringUtil2 { /** * @param args */ //private static String temPath = "E:\\tem\\string\\res"; static String en = ""; static String ar = ""; static String de = ""; static String es = ""; static String fa = ""; static String fr = ""; static String in = ""; static String it = ""; static String pl = ""; static String pt = ""; static String ru = ""; static String tr = ""; static String zh = ""; private static ArrayList<String> listDir = new ArrayList<String>(); private List<Map<String, Object>> mData; private static List<Map<String, Object>> s1; private static String sepa =java.io.File.separator; public static void main(String[] args) { // TODO Auto-generated method stub init(); } private static void init() { // TODO Auto-generated method stub String directory = ""; directory = JarTool.getJarDir(); en = directory+sepa+"values"+sepa; ar = directory+sepa+"values-ar"+sepa; de = directory+sepa+"values-de"+sepa; es = directory+sepa+"values-es"+sepa; fa = directory+sepa+"values-fa"+sepa; fr = directory+sepa+"values-fr"+sepa; in = directory+sepa+"values-in"+sepa; it = directory+sepa+"values-it"+sepa; pl = directory+sepa+"values-pl"+sepa; pt = directory+sepa+"values-pt"+sepa; ru = directory+sepa+"values-ru"+sepa; tr = directory+sepa+"values-tr"+sepa; zh = directory+sepa+"values-zh"+sepa; listDir.add(en); listDir.add(ar); listDir.add(de); listDir.add(es); listDir.add(fa); listDir.add(fr); listDir.add(in); listDir.add(it); listDir.add(pl); listDir.add(pt); listDir.add(ru); listDir.add(tr); listDir.add(zh); for(int i = 1;i<listDir.size();i++) { System.out.println("listDir path : "+listDir.get(i).toString()); } initEngString(); new Thread() { public void run()  { for(int k = 1;k<listDir.size();k++) { System.out.println(listDir.get(k)); readFile(listDir.get(k)); } }; }.start(); } private static void initEngString() { s1 = new ArrayList<Map<String,Object>>(); try { s1 = startDoWork(listDir.get(0),true); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } protected static void readFile(String path) { // TODO Auto-generated method stub initEngString(); List<Map<String, Object>> s2 = new ArrayList<Map<String,Object>>(); try { s2 = startDoWork(path, false); if(s1!=null &&s2!=null) { System.out.println(path+"      s1 : "+s1.size()+"  s2 : "+s2.size()); } else { System.out.println("file has some problem..."); return; } ArrayList ss = new ArrayList(); for(int u = 0;u<s1.size();u++) { ss.add(s1.get(u).get("en").toString()); } int same = 0; int dif = 0; List<Map<String, Object>> diffStr = new ArrayList<Map<String,Object>>(); diffStr = s1; for(int i = 0;i<s2.size();i++) { for(int k = 0;k<s1.size();k++) { if(s1.get(k).containsValue(s2.get(i).get("tag").toString())) { diffStr.remove(k); same++; } } } /*for(int i = 0;i <s1.size();i++) { if(s2.contains(s1.get(i))) { same++; } else { dif++; diffStr.add(s1.get(i).get("en").toString()); } }*/ ArrayList s = new ArrayList(); for(int p = 0;p<s2.size();p++) { s.add(s2.get(p).get("other")); } for(int k = 0;k<diffStr.size();k++) { //diffStr.add(s1.get(k).get("other").toString()); //System.out.println(s1.get(k)); s.add(diffStr.get(k).get("en")); } s = sortLine(s,ss); System.out.println("same : "+same+" dif : "+s1.size()); writeStr(path,s); System.out.println("write success "); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } s2.clear(); } private static ArrayList sortLine(ArrayList sLan,ArrayList sEng)  { // TODO Auto-generated method stub ArrayList sLanTag = new ArrayList(); for(int i = 0;i<sLan.size();i++) { sLanTag.add(sLan.get(i).toString().trim().split("\"")[1]); } ArrayList sEngTag = new ArrayList(); for(int i = 0;i<sEng.size();i++) { sEngTag.add(sEng.get(i).toString().trim().split("\"")[1]); } ArrayList sLanSort = new ArrayList(); for(int a = 0;a <sEng.size();a++) { for(int b = 0;b<sLan.size();b++) { if(sLanTag.get(b).equals(sEngTag.get(a))) { sLanSort.add(sLan.get(b)); } } } System.out.println("sEngTag :"+sEngTag.size()); System.out.println("sLanTag :"+sLanTag.size()); System.out.println("sort size : "+sLanSort.size()); return sLanSort; } private static List<Map<String, Object>> startDoWork(String path,boolean isEng) throws Exception  { List<Map<String, Object>> mapList = new ArrayList<Map<String,Object>>();    File file = new File(path, "strings.xml");//获取result.txt 文件 生成地址      if (file.isFile() && file.exists())    { // 判断文件是否存在              InputStreamReader read = new InputStreamReader(new FileInputStream(file), "UTF-8");// 考虑到编码格式          BufferedReader bufferedReader = new BufferedReader(read);          String line = null;          int count = 0;        while ((line = bufferedReader.readLine()) != null)        {         Map<String,Object> map = new HashMap<String, Object>();         if(line.contains("string name="))         {         String ss = line.trim().split("\"")[1];         // System.out.println(ss);         map.put("tag", ss);         if(isEng)         {         //line1.add("\n"+line);         map.put("en", "\n"+line);         }         else         {                 //System.out.println(line);         //line2.add(("\n"+line).getBytes());         map.put("other","\n"+line);         }         mapList.add(map);         count++;         }        }          read.close();          //System.out.println(path+" count : "+mapList.size());        return mapList;    }      else     System.out.println("file not exist...");    return null; } private static void writeStr(String filePath2,ArrayList line2) { try {    File file = new File(filePath2, "strings.xml"); if(file.exists()) {            file.delete();            file.createNewFile(); }             FileOutputStream fos = new FileOutputStream (file,true ) ;                            String start1 = "<?"+"xml version"+"="+"\"1.0\""+" encoding"+"="+"\"utf-8\""+"?>";             fos.write(start1.getBytes("UTF-8"));              String start2 = "\n<resources>";             fos.write(start2.getBytes("UTF-8"));              for(int o = 0;o<line2.size();o++)             {            fos.write(line2.get(o).toString().getBytes("UTF-8"));              }           /*  for(int m = 0;m<diffStr.size();m++)             {            fos.write((diffStr.get(m).toString()).getBytes()) ;              }*/             String s2 = "\n</resources>";             fos.write(s2.getBytes("UTF-8"));             // String str = "ABC \n" ; //字符串末尾需要换行符                           fos.close ();            } catch (IOException e) {                e.printStackTrace();            }    }}

转载请注明原文地址: https://www.6miu.com/read-2630970.html

最新回复(0)