Baru-baru ini, karena kebutuhan untuk internasionalisasi proyek, diperlukan internasionalisasi sekitar 100 plug-in di seluruh proyek. Ini adalah hal yang menyakitkan karena ini murni pekerjaan manual. Untuk menghemat beberapa pekerjaan, saya berpikir untuk menulis program pemrosesan batch untuk mengurangi beban kerja, jadi saya membuat kode berikut.
1. Baca file (.java) yang ditentukan :
Copy kode kodenya sebagai berikut:
public static String readFile(String path) melempar IOException {
File f = File baru (jalur);
StringBuffer res = StringBuffer baru();
String filePathStr = f.getPath();
System.out.println("Dapatkan jalur file:::::::"+filePathStr);
FileInputStream fis = FileInputStream baru(f);
InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //Buka file teks dengan pengkodean gbk
BufferedReader br = BufferedReader baru(isr, 8192 * 8);
Garis string = null;
int barisnum = 0;
while((line=br.readLine())!=null) {
nomor baris++;
res.append(line+"Anda dapat menambahkan logika pemrosesan string Anda sendiri di sini"+"/r/n");
}
br.close();
kembalikan res.toString();
}
2. Tulis informasi konten file yang telah dibaca ke file (.java) yang ditentukan Copy kode kodenya sebagai berikut:
writeFile boolean statis publik(String lanjutan, jalur String) {
mencoba {
File dist = File baru (jalur);
Penulis OutputStreamWriter = OutputStreamWriter baru(FileOutputStream baru(dist),"GBK");
penulis.write(lanjutan);
penulis.flush();
penulis.close();
kembali benar;
} tangkapan (IOException e) {
e.printStackTrace();
kembali salah;
}
}
3. Temukan semua file .java yang memenuhi syarat di direktori yang ditentukan dan perbarui informasi file Copy kode kodenya sebagai berikut:
/**
* Temukan file
* @param f
* @throwsIOException
*/
public static void findFile(File f) melempar IOException {
if(f.ada()) {
if(f.isDirectory()) {
untuk(File fs:f.listFiles(ff)) {
temukanFile(fs);
}
} kalau tidak {
perbaruiFile(f);
}
}
}
/**
* Baca file java baris demi baris
* @param f
* @throwsIOException
*/
private static void updateFile(File f) melempar IOException {
String filePathStr = f.getPath();
System.out.println("Jalur untuk mulai membaca file:::::::"+filePathStr);
FileInputStream fis = FileInputStream baru(f);
InputStreamReader isr = new InputStreamReader(fis,Charset.forName("GBK")); //Buka file teks dengan pengkodean gbk
BufferedReader br = BufferedReader baru(isr, 8192 * 8);
Garis string = null;
int barisnum = 0;
StringBuffer res = StringBuffer baru();
while((line=br.readLine())!=null) {
String updateStr= updateStr(baris);
res.append(updateStr+"/r/n");
if(!line.trim().equals(updateStr.trim())) {
nomor baris++;
}
}
br.close();
//Jika file telah diubah, file yang dimodifikasi akan menimpa file aslinya.
jika(linenum>0) {
Sistem.keluar.println("==============");
Sistem.keluar.println("filePathStr:"+filePathStr);
System.out.println("File telah diubah pada "+linenum+".");
Sistem.keluar.println("==================== ");
String cont = res.toString();
ReadWriteFile.write(lanjutan, filePathStr);
}
}
/**
* Verifikasi informasi string yang dibaca
* dan perbarui informasi string
* @param str
*/
Pembaruan String statis pribadiStr(String str) {
//Tentukan apakah string tersebut merupakan string yang perlu diperbarui
boolean isok = filterStr(str);
int strNum = StringValidation.strNum(str, StringValidation.ch);
if(isok || strNum == 0) {
kembalikan str;
} kalau tidak {
Suhu string = "";
untuk(int i=1;i<=strNum/2;i++) {
temp += " //$NON-NLS-"+i+"$"; //Karakter yang akan ditambahkan
}
str = str+temp;
}
kembalikan str;
}
//Memfilter jenis file
FileFilter statis pribadi ff = FileFilter baru() {
boolean publik terima(Nama jalur file) {
Jalur string = pathname.getName().toLowerCase();
logger.info("Jalur Filter File::::"+jalur);
//Hanya cocok dengan file yang diakhiri dengan .java
if (nama jalur.isDirectory() || jalur.endsWith(".java")) {
kembali benar;
}
kembali salah;
}
};
/**
* Saring string yang tidak perlu diproses
* @param str
* @kembali
*/
filter boolean statis publikStr(String str) {
boolean isok = salah;
//Menyaring string
isok = (str.indexOf("impor ")>=0)
||. (str.indexOf("paket ")>=0)
||.(str.indexOf("kelas")>=0)
||.(str.indexOf("//$NON-NLS")>=0)
||.(str.indexOf("//")==0)
||. (str.indexOf("/*")>=0)
||. (str.indexOf("*")>=0)
||. (str.trim().indexOf("@")==0)
||. (str.indexOf("/"")==-1)
||.
||.adalahCh(str);
kembali isok;
}
/**
* Verifikasi apakah string berisi karakter Cina
* @param str
* @kembali
*/
boolean statis publik isCh(String str) {
Pola pa = Pattern.compile("[/u4E00-/u9FA0]");
Pencocokan m = pa.matcher(str);
boolean isok = m.find();
kembali isok;
}
Ringkasan: Saat kita mendapat permintaan dari orang lain, jangan terburu-buru menanganinya, analisa dulu, lalu analisa, lalu buat solusi optimal untuk menangani pekerjaan itu dengan baik.