Aufgrund der Notwendigkeit der Internationalisierung des Projekts ist es in letzter Zeit notwendig, etwa 100 Plug-Ins im gesamten Projekt zu internationalisieren. Dies ist eine schmerzhafte Sache, da es sich um reine Handarbeit handelt. Um etwas Arbeit zu sparen, habe ich darüber nachgedacht, ein Stapelverarbeitungsprogramm zu schreiben, um den Arbeitsaufwand zu reduzieren, und habe mir daher den folgenden Code ausgedacht.
1. Lesen Sie die angegebene (.java) Datei :
Kopieren Sie den Codecode wie folgt:
öffentlicher statischer String readFile(String path) löst eine IOException {
Datei f = neue Datei (Pfad);
StringBuffer res = new StringBuffer();
String filePathStr = f.getPath();
System.out.println("Den Pfad der Datei abrufen:::::::"+filePathStr);
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //Textdatei mit GBK-Codierung öffnen
BufferedReader br = new BufferedReader(isr, 8192 * 8);
String line = null;
int Leinen = 0;
while((line=br.readLine())!=null) {
Leinen++;
res.append(line+"Sie können hier Ihre eigene String-Verarbeitungslogik hinzufügen"+"/r/n");
}
br.close();
return res.toString();
}
2. Schreiben Sie die Inhaltsinformationen der gelesenen Datei in die angegebene Datei (.java). Kopieren Sie den Codecode wie folgt:
public static boolean writeFile(String cont, String path) {
versuchen {
Dateidist = neue Datei (Pfad);
OutputStreamWriterwriter = new OutputStreamWriter(new FileOutputStream(dist),"GBK");
Writer.write(cont);
Writer.flush();
Writer.close();
return true;
} Catch (IOException e) {
e.printStackTrace();
return false;
}
}
3. Suchen Sie alle qualifizierten .java-Dateien im angegebenen Verzeichnis und aktualisieren Sie die Dateiinformationen Kopieren Sie den Codecode wie folgt:
/**
* Dateien finden
* @param f
* @throwsIOException
*/
public static void findFile(File f) löst eine IOException {
if(f.exists()) {
if(f.isDirectory()) {
for(File fs:f.listFiles(ff)) {
findFile(fs);
}
} anders {
updateFile(f);
}
}
}
/**
* Java-Dateien Zeile für Zeile lesen
* @param f
* @throwsIOException
*/
private static void updateFile(File f) löst eine IOException {
String filePathStr = f.getPath();
System.out.println("Pfad zum Starten des Lesens der Datei:::::::"+filePathStr);
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //Textdatei mit GBK-Kodierung öffnen
BufferedReader br = new BufferedReader(isr, 8192 * 8);
String line = null;
int Leinen = 0;
StringBuffer res = new StringBuffer();
while((line=br.readLine())!=null) {
String updateStr= updateStr(line);
res.append(updateStr+"/r/n");
if(!line.trim().equals(updateStr.trim())) {
Leinen++;
}
}
br.close();
//Wenn die Datei geändert wurde, überschreibt die geänderte Datei die Originaldatei.
if(linenum>0) {
System.out.println("=============================");
System.out.println("filePathStr:"+filePathStr);
System.out.println("Die Datei wurde unter "+linenum+" geändert.");
System.out.println("=============================");
String cont = res.toString();
ReadWriteFile.write(cont, filePathStr);
}
}
/**
* Überprüfen Sie die gelesenen String-Informationen
* und String-Informationen aktualisieren
* @param str
*/
privater statischer String updateStr(String str) {
//Bestimmen Sie, ob es sich bei der Zeichenfolge um eine Zeichenfolge handelt, die aktualisiert werden muss
boolean isok = filterStr(str);
int strNum = StringValidation.strNum(str, StringValidation.ch);
if(isok || strNum == 0) {
return str;
} anders {
String temp = "";
for(int i=1;i<=strNum/2;i++) {
temp += " //$NON-NLS-"+i+"$"; //Zu hinzufügende Zeichen
}
str = str+temp;
}
return str;
}
//Dateitypen filtern
privater statischer FileFilter ff = new FileFilter() {
public boolean Accept(Dateipfadname) {
String path = pathname.getName().toLowerCase();
logger.info("FileFilter path::::"+path);
//Nur Dateien mit der Endung .java abgleichen
if (pathname.isDirectory() || path.endsWith(".java")) {
return true;
}
return false;
}
};
/**
* Filtern Sie Zeichenfolgen heraus, die nicht verarbeitet werden müssen
* @param str
* @zurückkehren
*/
öffentlicher statischer boolescher FilterStr(String str) {
boolean isok = false;
//Filterzeichenfolge
isok = (str.indexOf("import")>=0)
||. (str.indexOf("package")>=0)
||. (str.indexOf(" class ")>=0)
||. (str.indexOf("//$NON-NLS")>=0)
||. (str.indexOf("//")==0)
||. (str.indexOf("/*")>=0)
||. (str.indexOf("*")>=0)
||. (str.trim().indexOf("@")==0)
||. (str.indexOf("/"")==-1)
||. ("".equals(str))
||. isCh(str);
isok zurückgeben;
}
/**
* Überprüfen Sie, ob die Zeichenfolge chinesische Zeichen enthält
* @param str
* @zurückkehren
*/
öffentlicher statischer boolescher Wert isCh(String str) {
Muster pa = Pattern.compile("[/u4E00-/u9FA0]");
Matcher m = pa.matcher(str);
boolean isok = m.find();
isok zurückgeben;
}
Zusammenfassung: Wenn wir eine Anfrage von anderen erhalten, sollten Sie diese nicht überstürzt erst analysieren, dann analysieren und dann die optimale Lösung finden, um die Arbeit gut zu bewältigen.