เมื่อเร็ว ๆ นี้ เนื่องจากความต้องการทำให้โครงการเป็นสากล จึงจำเป็นต้องทำให้ปลั๊กอินประมาณ 100 รายการเป็นสากลในโครงการทั้งหมด นี่เป็นเรื่องที่เจ็บปวดเพราะเป็นการใช้แรงงานคนล้วนๆ เพื่อที่จะบันทึกงานบางอย่าง ฉันคิดที่จะเขียนโปรแกรมประมวลผลแบบแบตช์เพื่อลดภาระงาน ดังนั้นฉันจึงคิดโค้ดต่อไปนี้ขึ้นมา
1. อ่านไฟล์ (.java) ที่ระบุ :
คัดลอกรหัสรหัส ดังต่อไปนี้:
สาธารณะสตริงคงที่ readFile (เส้นทางสตริง) พ่น 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);
เส้นสตริง = null;
ผ้าลินิน int = 0;
ในขณะที่ ((line=br.readLine())!=null) {
ผ้าปูเตียง++;
res.append(line+"คุณสามารถเพิ่มตรรกะการประมวลผลสตริงของคุณเองได้ที่นี่"+"/r/n");
-
br.ปิด();
กลับ res.toString();
-
2. เขียนข้อมูลเนื้อหาไฟล์ที่อ่านไปยังไฟล์ที่ระบุ (.java) คัดลอกรหัสรหัส ดังต่อไปนี้:
writeFile บูลีนแบบคงที่สาธารณะ (ต่อสตริง เส้นทางสตริง) {
พยายาม {
ไฟล์ dist = ไฟล์ใหม่ (เส้นทาง);
ผู้เขียน OutputStreamWriter = OutputStreamWriter ใหม่ (FileOutputStream ใหม่ (dist), "GBK");
นักเขียน. เขียน (ต่อ);
นักเขียน.ฟลัช();
นักเขียน.ปิด();
กลับเป็นจริง;
} จับ (IOException จ) {
e.printStackTrace();
กลับเท็จ;
-
-
3. ค้นหาไฟล์ .java ที่ผ่านการรับรองทั้งหมดในไดเร็กทอรีที่ระบุ และอัพเดตข้อมูลไฟล์ คัดลอกรหัสรหัส ดังต่อไปนี้:
-
* ค้นหาไฟล์
* @param ฉ
* @throwsIOException
-
โมฆะสาธารณะคงที่ findFile (ไฟล์ f) พ่น IOException {
ถ้า (f.exists()) {
ถ้า (f.isDirectory()) {
สำหรับ (ไฟล์ fs:f.listFiles(ff)) {
ค้นหาไฟล์(fs);
-
} อื่น {
อัพเดตไฟล์(f);
-
-
-
-
* อ่านไฟล์ Java ทีละบรรทัด
* @param ฉ
* @throwsIOException
-
โมฆะคงที่ส่วนตัว updateFile (ไฟล์ 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);
เส้นสตริง = null;
ผ้าลินิน int = 0;
StringBuffer res = ใหม่ StringBuffer();
ในขณะที่ ((line=br.readLine())!=null) {
สตริง updateStr= updateStr(line);
res.append(updateStr+"/r/n");
ถ้า(!line.trim().เท่ากับ(updateStr.trim())) {
ผ้าปูเตียง++;
-
-
br.ปิด();
//หากไฟล์ได้รับการแก้ไข ไฟล์ที่ถูกแก้ไขจะเขียนทับไฟล์ต้นฉบับ
ถ้า (ผ้าลินิน> 0) {
System.out.println("=============================");
System.out.println("filePathStr:"+filePathStr);
System.out.println("ไฟล์ได้รับการแก้ไขที่ "+linenum+"");
System.out.println("=============================");
สตริงต่อ = res.toString();
ReadWriteFile.write (ต่อ, filePathStr);
-
-
-
* ตรวจสอบข้อมูลสตริงการอ่าน
* และอัพเดตข้อมูลสตริง
* @param str
-
ส่วนตัวสตริงคงที่ updateStr (สตริง str) {
//ตรวจสอบว่าสตริงนั้นเป็นสตริงที่ต้องอัปเดตหรือไม่
isok บูลีน = filterStr(str);
int strNum = StringValidation.strNum (str, StringValidation.ch);
ถ้า (isok || strNum == 0) {
กลับ STR;
} อื่น {
อุณหภูมิสตริง = "";
สำหรับ(int i=1;i<=strNum/2;i++) {
temp += " //$NON-NLS-"+i+"$"; // ตัวอักษรที่จะเพิ่ม
-
STR = STR+อุณหภูมิ;
-
กลับ STR;
-
//กรองประเภทไฟล์
FileFilter คงที่ส่วนตัว ff = FileFilter ใหม่ () {
ยอมรับบูลีนสาธารณะ (ชื่อพาธของไฟล์) {
เส้นทางสตริง = pathname.getName().toLowerCase();
logger.info("เส้นทาง FileFilter::::"+path);
//จับคู่เฉพาะไฟล์ที่ลงท้ายด้วย .java
ถ้า (pathname.isDirectory() || path.endsWith(".java")) {
กลับเป็นจริง;
-
กลับเท็จ;
-
-
-
* กรองสตริงที่ไม่จำเป็นต้องประมวลผลออก
* @param str
* @กลับ
-
สาธารณะ filterStr บูลีนคงที่ (String str) {
isok บูลีน = false;
//กรองสตริง
isok = (str.indexOf("นำเข้า ")>=0)
||. (str.indexOf("แพ็คเกจ")>=0)
||. (str.indexOf(" คลาส ")>=0)
||. (str.indexOf("//$NON-NLS")>=0)
||. (str.indexOf("//")==0)
||. (str.indexOf("/*")>=0)
||. (str.indexOf("*")>=0)
||. (str.trim().indexOf("@")==0)
||. (str.indexOf("/"")==-1)
||. ("".เท่ากับ(str))
||.isCh(str);
กลับ isok;
-
-
* ตรวจสอบว่าสตริงมีตัวอักษรจีนหรือไม่
* @param str
* @กลับ
-
isCh บูลีนคงที่สาธารณะ (String str) {
รูปแบบ pa = Pattern.compile("[/u4E00-/u9FA0]");
Matcher m = pa.matcher(str);
isok บูลีน = m.find();
กลับ isok;
-
สรุป เมื่อเราได้รับความต้องการจากผู้อื่น อย่ารีบจัดการ วิเคราะห์ก่อน แล้วค่อยวิเคราะห์ แล้วหาทางออกที่เหมาะสมที่สุดเพื่อจัดการงานให้ดี