Recientemente, debido a la necesidad de internacionalización del proyecto, es necesario internacionalizar alrededor de 100 complementos en todo el proyecto. Esto es algo doloroso porque es trabajo puramente manual. Para ahorrar algo de trabajo, pensé en escribir un programa de procesamiento por lotes para reducir la carga de trabajo, así que se me ocurrió el siguiente código.
1. Lea el archivo especificado (.java) :
Copie el código de código de la siguiente manera:
cadena estática pública readFile (ruta de cadena) lanza IOException {
Archivo f = nuevo archivo (ruta);
StringBuffer res = nuevo StringBuffer();
Cadena filePathStr = f.getPath();
System.out.println("Obtener la ruta del archivo:::::::"+filePathStr);
FileInputStream fis = nuevo FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK") //Abrir archivo de texto con codificación gbk
BufferedReader br = nuevo BufferedReader(isr, 8192 * 8);
Línea de cadena = nula;
int lino = 0;
while((linea=br.readLine())!=null) {
lino++;
res.append(line+"Puedes agregar tu propia lógica de procesamiento de cadenas aquí"+"/r/n");
}
br.cerrar();
devolver res.toString();
}
2. Escriba la información del contenido del archivo leído en el archivo especificado (.java). Copie el código de código de la siguiente manera:
archivo de escritura booleano estático público (cadena cont, ruta de cadena) {
intentar {
Dist de archivo = nuevo archivo (ruta);
Escritor OutputStreamWriter = nuevo OutputStreamWriter(nuevo FileOutputStream(dist),"GBK");
escritor.write(cont);
escritor.flush();
escritor.close();
devolver verdadero;
} captura (IOException e) {
e.printStackTrace();
devolver falso;
}
}
3. Busque todos los archivos .java calificados en el directorio especificado y actualice la información del archivo. Copie el código de código de la siguiente manera:
/**
* Buscar archivos
* @param f
* @throwsIOException
*/
public static void findFile (Archivo f) lanza IOException {
si(f.existe()) {
si(f.isDirectorio()) {
for(Archivo fs:f.listFiles(ff)) {
buscarArchivo(fs);
}
} demás {
actualizarArchivo(f);
}
}
}
/**
* Leer archivos java línea por línea
* @param f
* @throwsIOException
*/
updateFile vacío estático privado (Archivo f) lanza IOException {
Cadena filePathStr = f.getPath();
System.out.println("Ruta para comenzar a leer el archivo:::::::"+filePathStr);
FileInputStream fis = nuevo FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK") //Abrir archivo de texto con codificación gbk
BufferedReader br = nuevo BufferedReader(isr, 8192 * 8);
Línea de cadena = nula;
int lino = 0;
StringBuffer res = nuevo StringBuffer();
while((linea=br.readLine())!=null) {
Cadena updateStr= updateStr(línea);
res.append(updateStr+"/r/n");
if(!line.trim().equals(updateStr.trim())) {
lino++;
}
}
br.cerrar();
//Si el archivo ha sido modificado, el archivo modificado sobrescribirá el archivo original.
if(linenum>0) {
System.out.println("===============================");
System.out.println("filePathStr:"+filePathStr);
System.out.println("El archivo ha sido modificado en "+linenum+".");
System.out.println("==============================");
Cadena continua = res.toString();
ReadWriteFile.write(cont, filePathStr);
}
}
/**
* Verificar la información de la cadena leída
* y actualizar la información de la cadena
* @param str
*/
cadena estática privada updateStr (cadena cadena) {
//Determinar si la cadena es una cadena que necesita ser actualizada
isok booleano = filterStr(str);
int strNum = StringValidation.strNum(str, StringValidation.ch);
si(isok || strNum == 0) {
devolver cadena;
} demás {
Temperatura de cadena = "";
for(int i=1;i<=strNum/2;i++) {
temp += " //$NON-NLS-"+i+"$" //Caracteres que se agregarán
}
cadena = cadena+temp;
}
devolver cadena;
}
//Filtrar tipos de archivos
FileFilter estático privado ff = nuevo FileFilter() {
aceptación booleana pública (nombre de ruta del archivo) {
Ruta de cadena = nombre de ruta.getName().toLowerCase();
logger.info("Ruta del filtro de archivos::::"+ruta);
//Solo coincide con archivos que terminan en .java
if (nombreruta.isDirectory() || ruta.endsWith(".java")) {
devolver verdadero;
}
devolver falso;
}
};
/**
* Filtrar cadenas que no necesitan ser procesadas
* @param str
* @devolver
*/
filterStr booleano estático público (String str) {
isok booleano = falso;
//Filtrar cadena
isok = (str.indexOf("importar ")>=0)
|| (str.indexOf("paquete")>=0)
|| (cadena.indexOf(" clase ")>=0)
|| (str.indexOf("//$NO-NLS")>=0)
|| (cadena.indexOf("//")==0)
|| (cadena.indexOf("/*")>=0)
|| (cadena.indexOf("*")>=0)
|| (cadena.trim().indexOf("@")==0)
|| (cadena.indexOf("/"")==-1)
|| ("".equals(cadena))
|| esCh(cadena);
volver isok;
}
/**
* Verificar si la cadena contiene caracteres chinos
* @param str
* @devolver
*/
isCh booleano estático público (String str) {
Patrón pa = Pattern.compile("[/u4E00-/u9FA0]");
Emparejador m = pa.matcher(str);
isok booleano = m.find();
volver isok;
}
Resumen: cuando recibimos una demanda de otros, no nos apresuremos a abordarla primero, luego analizarla y luego encontrar la solución óptima para manejar bien el trabajo.