Recentemente, devido à necessidade de internacionalização do projeto, foi necessário internacionalizar cerca de 100 plug-ins em todo o projeto. Isso é doloroso porque é um trabalho puramente manual. Para economizar algum trabalho, pensei em escrever um programa de processamento em lote para reduzir a carga de trabalho, então criei o código a seguir.
1. Leia o arquivo especificado (.java) :
Copie o código do código da seguinte forma:
public static String readFile(String path) lança IOException {
Arquivo f = novo arquivo(caminho);
StringBuffer res = new StringBuffer();
String filePathStr = f.getPath();
System.out.println("Obter o caminho do arquivo:::::::"+filePathStr);
FileInputStream fis = novo FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //Abre arquivo de texto com codificação gbk
BufferedReader br = novo BufferedReader(isr, 8192 * 8);
Linha de string = nulo;
int número de linha = 0;
while((line=br.readLine())!=null) {
númerolinha++;
res.append(line+"Você pode adicionar sua própria lógica de processamento de string aqui"+"/r/n");
}
close();
retornar res.toString();
}
2. Grave as informações de conteúdo do arquivo lido no arquivo especificado (.java) Copie o código do código da seguinte forma:
public static boolean writeFile(String cont, String path) {
tentar {
Arquivo dist = novo arquivo(caminho);
Escritor OutputStreamWriter = new OutputStreamWriter(new FileOutputStream(dist),"GBK");
escritor.write(cont);
escritor.flush();
escritor.close();
retornar verdadeiro;
} catch (IOException e) {
e.printStackTrace();
retornar falso;
}
}
3. Encontre todos os arquivos .java qualificados no diretório especificado e atualize as informações do arquivo Copie o código do código da seguinte forma:
/**
* Encontre arquivos
* @param f
* @throwsIOException
*/
public static void findFile(Arquivo f) lança IOException {
if(f.existe()) {
if(f.isDirectory()) {
for(Arquivo fs:f.listArquivos(ff)) {
encontrarArquivo(fs);
}
} outro {
atualizarArquivo(f);
}
}
}
/**
* Leia arquivos java linha por linha
* @param f
* @throwsIOException
*/
private static void updateFile(Arquivo f) lança IOException {
String filePathStr = f.getPath();
System.out.println("Caminho para iniciar a leitura do arquivo:::::::"+filePathStr);
FileInputStream fis = novo FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //Abre arquivo de texto com codificação gbk
BufferedReader br = novo BufferedReader(isr, 8192 * 8);
Linha de string = nulo;
int número de linha = 0;
StringBuffer res = new StringBuffer();
while((line=br.readLine())!=null) {
String updateStr= updateStr(linha);
res.append(updateStr+"/r/n");
if(!line.trim().equals(updateStr.trim())) {
númerolinha++;
}
}
close();
//Se o arquivo foi modificado, o arquivo modificado substituirá o arquivo original.
if(linenum>0) {
System.out.println("=============================");
System.out.println("filePathStr:"+filePathStr);
System.out.println("O arquivo foi modificado em "+linenum+".");
System.out.println("=============================");
String cont = res.toString();
ReadWriteFile.write(cont, filePathStr);
}
}
/**
* Verifique as informações da string lida
* e atualizar as informações da string
* @paramstr
*/
private static String updateStr(String str) {
//Determina se a string é uma string que precisa ser atualizada
booleano isok = filterStr(str);
int strNum = StringValidation.strNum(str, StringValidation.ch);
if(isok || strNum == 0) {
retornar string;
} outro {
String temp = "";
for(int i=1;i<=strNum/2;i++) {
temp += " //$NON-NLS-"+i+"$"; //Caracteres a serem adicionados
}
str = str+temp;
}
retornar string;
}
//Filtrar tipos de arquivo
private static FileFilter ff = new FileFilter() {
public boolean aceitar(nome do caminho do arquivo) {
String caminho = pathname.getName().toLowerCase();
logger.info("Caminho do arquivoFilter::::"+caminho);
//Corresponde apenas aos arquivos que terminam em .java
if (nomedocaminho.isDirectory() || caminho.endsWith(".java")) {
retornar verdadeiro;
}
retornar falso;
}
};
/**
* Filtre strings que não precisam ser processadas
* @paramstr
* @retornar
*/
public static boolean filterStr(String str) {
booleano isok = falso;
//Filtrar string
isok = (str.indexOf("importar ")>=0)
|| (str.indexOf("pacote ")>=0)
|| (str.indexOf("classe")>=0)
|| (str.indexOf("//$NON-NLS")>=0)
|| (str.indexOf("//")==0)
|| (str.indexOf("/*")>=0)
|| (str.indexOf("*")>=0)
|| (str.trim().indexOf("@")==0)
|| (str.indexOf("/"")==-1)
|| ("".igual(str))
|| isCh(str);
retornar isok;
}
/**
* Verifique se a string contém caracteres chineses
* @paramstr
* @retornar
*/
público estático booleano isCh(String str) {
Padrão pa = Pattern.compile("[/u4E00-/u9FA0]");
Correspondente m = pa.matcher(str);
booleano isok = m.find();
retornar isok;
}
Resumo: Quando recebemos uma demanda de outras pessoas, não se apresse em atendê-la primeiro, depois analise-a e depois encontre a solução ideal para realizar bem o trabalho.