В последнее время из-за необходимости интернационализации проекта приходится интернационализировать около 100 плагинов во всем проекте. Это болезненное дело, потому что это чисто ручной труд. Чтобы сэкономить немного работы, я подумал о написании программы пакетной обработки, чтобы уменьшить рабочую нагрузку, поэтому придумал следующий код.
1. Прочтите указанный файл (.java) :
Скопируйте код кода следующим образом:
public static String readFile (String path) выдает IOException {
Файл f = новый файл (путь);
StringBuffer res = новый StringBuffer();
Строка filePathStr = f.getPath();
System.out.println("Получить путь к файлу:::::::"+filePathStr);
FileInputStream fis = новый FileInputStream (f);
InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //Открываем текстовый файл с кодировкой gbk);
BufferedReader br = новый BufferedReader (isr, 8192 * 8);
Строковая линия = ноль;
интервал строки = 0;
while((line=br.readLine())!=null) {
строка++;
res.append(line+"Здесь вы можете добавить свою собственную логику обработки строк"+"/r/n");
}
бр.закрыть();
вернуть res.toString();
}
2. Запишите информацию о содержимом прочитанного файла в указанный файл (.java). Скопируйте код кода следующим образом:
public static boolean writeFile(String cont, String path) {
пытаться {
Файл dist = новый файл (путь);
Writer OutputStreamWriter = новый OutputStreamWriter (новый FileOutputStream (dist), «GBK»);
писатель.писать (продолжение);
писатель.flush();
писатель.закрыть();
вернуть истину;
} catch (IOException e) {
е.printStackTrace();
вернуть ложь;
}
}
3. Найдите все подходящие файлы .java в указанном каталоге и обновите информацию о файлах. Скопируйте код кода следующим образом:
/**
* Найти файлы
* @парам ф
* @throwsIOException
*/
public static void findFile(File f) выдает IOException {
если (f.exists()) {
если (f.isDirectory()) {
for(File fs:f.listFiles(ff)) {
найтиФайл (фс);
}
} еще {
updateFile (ф);
}
}
}
/**
* Чтение Java-файлов построчно
* @парам ф
* @throwsIOException
*/
Private static void updateFile(File f) выдает IOException {
Строка filePathStr = f.getPath();
System.out.println("Путь начала чтения файла:::::::"+filePathStr);
FileInputStream fis = новый FileInputStream (f);
InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //Открываем текстовый файл с кодировкой gbk);
BufferedReader br = новый BufferedReader (isr, 8192 * 8);
Строковая линия = ноль;
интервал строки = 0;
StringBuffer res = новый StringBuffer();
while((line=br.readLine())!=null) {
Строка updateStr = updateStr(строка);
res.append(updateStr+"/r/n");
if(!line.trim().equals(updateStr.trim())) {
строка++;
}
}
бр.закрыть();
//Если файл был изменен, измененный файл перезапишет исходный файл.
если (линейный номер>0) {
System.out.println("=============================");
System.out.println("filePathStr:"+filePathStr);
System.out.println("Файл был изменен в "+linenum+".");
System.out.println("=============================");
Строка cont = res.toString();
ReadWriteFile.write(продолжение, filePathStr);
}
}
/**
* Проверьте информацию о прочитанной строке.
* и обновить информацию о строке
* @param ул
*/
частная статическая строка updateStr (String str) {
//Определяем, является ли строка строкой, которую необходимо обновить
логическое isok = filterStr(str);
int strNum = StringValidation.strNum(str, StringValidation.ch);
if(isok || strNum == 0) {
вернуть ул;
} еще {
Строка temp = "";
for(int i=1;i<=strNum/2;i++) {
temp += " //$NON-NLS-"+i+"$" //Добавляемые символы
}
ул = ул+темп;
}
вернуть ул;
}
//Фильтрация типов файлов
частный статический FileFilter ff = новый FileFilter() {
public boolean Accept (Путь к файлу) {
Строковый путь = pathname.getName().toLowerCase();
logger.info("Путь FileFilter::::"+path);
//Сопоставлять только файлы, заканчивающиеся на .java
if (pathname.isDirectory() || path.endsWith(".java")) {
вернуть истину;
}
вернуть ложь;
}
};
/**
* Отфильтровать строки, которые не требуют обработки.
* @param ул
* @возвращаться
*/
public static boolean filterStr(String str) {
логическое значение isok = ложь;
//Фильтрируем строку
isok = (str.indexOf("импорт")>=0)
|| (str.indexOf("пакет")>=0)
|| (str.indexOf("класс")>=0)
|| (str.indexOf("//$NON-NLS")>=0)
|| (str.indexOf("//")==0)
|| (стр.индексOf("/*")>=0)
|| (стр.индексOf("*")>=0)
|| (str.trim().indexOf("@")==0)
|| (str.indexOf("/"")==-1)
|| ("".equals(ул))
|| isCh(стр);
вернуть исок;
}
/**
* Проверьте, содержит ли строка китайские символы.
* @param ул
* @возвращаться
*/
public static boolean isCh(String str) {
Шаблон pa = Pattern.compile("[/u4E00-/u9FA0]");
Сопоставитель m = pa.matcher(str);
логическое значение isok = m.find();
вернуть исок;
}
Резюме: Когда мы получаем требование от других, не спешите с ним разобраться, сначала проанализируйте его, затем проанализируйте, а затем примите оптимальное решение, чтобы хорошо справиться с работой.