เหตุผล:
เนื่องจากมีการดาวน์โหลดวิดีโอบทเรียนบางอย่างออนไลน์บางคนจึงมีชื่อที่ยาวมากและโดยทั่วไปได้รับการเลื่อนตำแหน่งโดยสถาบันหรือเว็บไซต์ดังนั้นจึงไม่สะดวกที่จะเห็นการแนะนำวิดีโอโดยตรงดังนั้นฟังก์ชั่นแรกต่อไปนี้จึงถูกสร้างขึ้นมา
เนื่องจากครูส่งโฟลเดอร์มากเกินไปในหลักสูตรมันเป็นปัญหาเกินกว่าที่จะหาได้ทีละคนดังนั้นฟังก์ชั่นที่สองจึงถูกสร้างขึ้นมา
ฉันเพิ่งเรียนรู้ความรู้เกี่ยวกับไฟล์ Java และสตรีมมิ่งเมื่อเร็ว ๆ นี้ดังนั้นฉันเพิ่งเกิดขึ้นเพื่อฝึกฝนทักษะของฉัน นี่เป็นโปรแกรม EXE ครั้งแรกของฉันดังนั้นฉันจึงสามารถแบ่งปันได้
(ส่งออกไฟล์ jar และใช้เครื่องมือ exe4j เพื่อสร้างไฟล์ exe ส่วนนี้จะถูกละเว้น)
ความรู้ที่ใช้:
ใช้ความรู้เกี่ยวกับไฟล์สตรีมและความรู้ GUI อย่างง่ายใน Java
การทำงาน:
ฟังก์ชั่น 1: ลบคำหลักบางคำในชื่อไฟล์และคุณสามารถตั้งค่าคำแทนได้
ฟังก์ชั่น 2: แยกไฟล์ทุกประเภทเฉพาะภายใต้เส้นทางและวางไว้ใต้โฟลเดอร์ใหม่ หากมีไฟล์ที่ซ้ำกันพวกเขาจะถูกจัดเรียงและเพิ่มตัวเลขโดยอัตโนมัติเพื่อแยกแยะไฟล์เหล่านั้น
ก่อนอื่นให้ดูที่อินเทอร์เฟซเริ่มต้นและไฟล์ EXE ที่สร้างขึ้น:
การสาธิตคุณสมบัติแรก:
ไม่มีการดำเนินการก่อน:
หลังจากการดำเนินการ: ลบคำหลักเดียวกันทั้งหมดในส่วนก่อนหน้า
นอกจากนี้ยังมีฟังก์ชั่นการถอน:
การสาธิตฟังก์ชั่นที่สอง:
ก่อนการทำงาน:
หลังการทำงาน:
แน่นอนว่ายังมีฟังก์ชั่นการถอน
การวิเคราะห์ซอร์สโค้ด:
คลาสเริ่มต้น:
แพ็คเกจ guuze; การทดสอบระดับสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// เริ่ม GUI นั่นคือส่วนต่อประสานผู้ใช้ใหม่ showgui ();}}แสดงคลาส GUI:
แพ็คเกจ guuze; นำเข้า java.awt.dimension; นำเข้า java.awt.flowlayout; นำเข้า java.awt.font; นำเข้า java.awt.image; นำเข้า java.awt.toolkit; นำเข้า Java.awt.event.mouseadapter; java.awt.event.windowevent; นำเข้า java.io.file; นำเข้า javax.swing.jbutton; นำเข้า Javax.swing.jframe; นำเข้า Javax.swing.jtextfield; jtextfield tf3; ส่วนตัว jbutton b4; ส่วนตัว jbutton b5; ส่วนตัว jbutton b6; ส่วนตัว jtextfield tf4; ส่วนตัว jtextfield tf5 ส่วนตัว jtextfield ส่วนตัว tf6; สตริงคงที่ส่วนตัว s1; public showgui () {// call startgui () โดยตรง flowlayout ()); ไอคอนรูปภาพ = toolkit.getDefaultToolKit (). getImage ("image/4.jpg"); // ตั้งค่าไอคอนโลโก้ซ้ายบน F.SeticOnimage (ไอคอน); // 6 ปุ่ม B1 = ใหม่ JButton ("เริ่ม"); b2 = new JButton ("retract"); b3 = new Jbutton ("Exit"); b4 = new Jbutton ("การสกัดแบบคลิกเดียว"); b5 = new Jbutton ("Exit"); b6 = new Jbutton ("Exit"); // ขนาด 6 ปุ่ม B1.SetPreferedsize 39)); b3.setPreferredSize (มิติใหม่ (89, 39)); b4.SetPreferredSize (มิติใหม่ (89, 39)); b5.setPreferredsize (มิติใหม่ (89, 39)); = new jtextfield ("โปรดป้อน Absolute_path", 40); tf1.setFont (ตัวอักษรใหม่ ("โปรดป้อนค่าสัมบูรณ์ _path", 40); tf1.setFont (ตัวอักษรใหม่ ("โปรดป้อน", font.plain, 25)); tf1.setbounds (200, 15, 550, 126); FONT ("โปรดป้อนคำหลัก", font.plain, 25)); tf2.setbounds (200, 15, 550, 126); tf3 = new Jtextfield ("โปรดป้อนข้อมูลแทน", 40); tf3.setfont (Font ใหม่ ("Zongyi" jtextfield ("โปรดป้อน Absolute_path", 40); tf4.setfont (ตัวอักษรใหม่ ("Zongyi", Font.plain, 25)); Tf4.SetBounds (200, 15, 550, 126); TF5 = New Jtextfield ( FONT ("โปรดป้อน", font.plain, 25)); tf5.setbounds (200, 15, 550, 126); tf6 = jtextfield ใหม่ ("โปรดป้อน fileType", 40); tf6.SetFont (ตัวอักษรใหม่ ("โปรดป้อน" f.add (tf1); f.add (tf2); f.add (tf3); f.add (b1); f.add (b2); f.add (b3); f.add (tf4); f.add (tf5); f.add (tf6); f.add (b4); ฟังก์ชั่นการฟังเหตุการณ์ myEvent (); f.setVisible (จริง);} โมฆะส่วนตัว myEvent () {// คลิกที่มุมบนขวา×เพื่อออกจาก F.AddwindowListener (WindowAdapter ใหม่ () Mouseadapter () {โมฆะสาธารณะ Mouseclicked (MouseEvent E) {S1 = tf1.getText (); // ทำการตัดสินเกี่ยวกับค่าในกล่องข้อความ หากไม่มีอะไรเขียนมันจะถือว่าว่างเปล่า ต่อไปนี้คล้ายกับ if (s1.equals ("โปรดป้อนพา ธ ")) {s1 = "";} ไฟล์ไฟล์ = ไฟล์ใหม่ (s1); การทดสอบสตริง []; test = file.list (); renamefunction.test1 = ทดสอบสตริง s2 = tf2.getText (); ถ้า (s2.equals (" tf3.getText (); ถ้า (s3.equals ("โปรดป้อน toplacewords")) {s3 = "";} ลอง {// เริ่มฟังก์ชั่นการเปลี่ยนชื่อ renamefunction.sure (s1, s2, s3);} catch (Exception e1) {}}}); Mouseclicked (MouseEvent E) {ลอง {ลอง {ถ้า (! s1.equals ("โปรดป้อนพา ธ ")) {// เริ่ม revokerename.revoke (s1);}} catch (Exception e2) {}} catch (Exception e1) {}}); Mouseclicked (MouseEvent E) {System.Exit (0); (s2.equals ("โปรดป้อน Absolute_path")) {s2 = "";} ถ้า (s3.equals ("โปรดป้อน target_path")) {s3 = "";} ถ้า (s4.equals ("โปรดป้อน fileType") {s4 = "";} // s4);}}); // คลิกเหตุการณ์ตอบสนอง b5.addmouselistener (ใหม่ mouseadapter () {โมฆะสาธารณะ mouseclicked (MouseEvent E) {String S2 = tf5.getText (); Mouseadapter () {โมฆะสาธารณะ Mouseclicked (MouseEvent E) {System.Exit (0); // ออก}});}} คลาสการตั้งค่าภาพพื้นหลัง GUI:
แพ็คเกจ guuze; นำเข้า javax.swing.imageicon; นำเข้า Javax.swing.jframe นำเข้า Javax.swing.jlabel; นำเข้า Javax.swing.jpanel; คลาสสาธารณะ bgset ขยาย jframe {private serialversionuid = 1L; 600); // เส้นทางไปยังภาพพื้นหลัง String path = "image/3.jpg"; imageicon background = new imageicon (path); jlabel label = new jlabel (พื้นหลัง); label.setbounds (0, 0, this.getWidth (), this.getheight ()); jpanel imagePanel = (JPanel) this.getContentPane (); imagepanel.setOpaque (false); this.getLayeredPane (). เพิ่ม (ฉลาก, จำนวนเต็มใหม่ (จำนวนเต็ม. min_value));}} คลาสการเปลี่ยนชื่อไฟล์:
แพ็คเกจ guuze; นำเข้า java.io.file; นำเข้า java.util.scanner; คลาสสาธารณะ renamefunction {อินพุตสแกนเนอร์แบบคงที่ = เครื่องสแกนใหม่ (System.in); สตริงคงที่สาธารณะทดสอบ 1 []; void คงที่สาธารณะ (สตริง S1, สตริง S2, สตริง S3) ชื่อสำหรับ (int i = 0; i <test.length; i ++) {// ตรวจสอบว่ามีคำหลักที่คุณต้องการลบถ้า (ทดสอบ [i] .indexof (s2)! = -1) {// บันทึกการทดสอบชื่อไฟล์ที่เปลี่ยนชื่อ [i] = ทดสอบ [i]. {สำหรับ (ไฟล์ f: ไฟล์) {if (f.isfile ()) {// วนรอบชื่อเปลี่ยนชื่อ f.renameto (ไฟล์ใหม่ (S1 + "/" + ทดสอบ [i ++]));}}}}}}}}}}}} การเปลี่ยนชื่อไฟล์และการถอนคลาสฟังก์ชั่น:
แพ็คเกจ guuze; นำเข้า java.io.file; คลาสสาธารณะ revokerename {โมฆะคงที่สาธารณะ revoke (สตริง S1) โยนข้อยกเว้น {// // กำหนดไฟล์ชื่อไฟล์ชื่อเดิม = ไฟล์ใหม่ (s1); ไฟล์ [] ไฟล์ = file.listfiles () (int i = 0; {// โปรดทราบว่า test1f.renameto (ไฟล์ใหม่ (s1 + "/" + renamefunction.test1 [i ++])));}}}}}}} ไฟล์คัดลอกไฟล์:
แพ็คเกจ guuze; นำเข้า java.io.bufferedInputStream; นำเข้า java.io.bufferedOutputStream นำเข้า java.io.file; นำเข้า java.io.fileinputstream; นำเข้า java.io.fileoutputstream; นำเข้า java.io.io.io.io.io.io.io.io.io.io.io.io.io.io.io.io.io.io.io.io target_path, string file_type) {// เริ่มฟังก์ชั่นลูป xunhuan (source_path, target_path, file_type);} โมฆะคงที่สาธารณะคงที่ xunhuan (สตริง source_path, สตริง target_path, สตริง file_type) {ไฟล์ไฟล์ = ไฟล์ใหม่ (file.isfile () && file.getabsolutepath (). endswith (file_type)) {สตริง new_path = target_path + "/" + file.getName (); ไฟล์ไฟล์ 1 = ไฟล์ใหม่ (new_path); if (! file1.exists ()) ชื่อไฟล์เหมือนกันเพิ่มตัวเลขก่อนที่จะแยกความแตกต่าง // โปรดใช้ // ในการแยกมันแทน string [] arr = new_path.split ("//."); สตริง new_path1 = arr [0] + นับ + " + arr [1]; file1.renameto (ไฟล์ใหม่ (new_path1));} // มันเป็นไฟล์ดังนั้นเริ่มคัดลอกไฟล์ fileCopyByBufferStreamArray (file.getAbsolutepath (), new_path); ร่างกายเพียงแค่ไม่ประมวลผล} else {สำหรับ (int i = 0; i <names.length; i ++) {// ไม่ใช่ไฟล์, iterate xunhuan (file.getabsolutepath () + "/" + names [i], target_path, file_type);}}} การเขียนไฟล์ที่มีความรู้เกี่ยวกับไฟล์สตรีมไฟล์ = ไฟล์ใหม่ (srcfile); ไฟล์ไฟล์ 1 = ไฟล์ใหม่ (targetFile); fileInputStream fis = null; fileOutputStream fos = null; bufferedInputStream bis = null; bufferedOutputTream bos = null; bufferedInputStream (fis); bos = new bufferedoutputStream (fos); int len = 0; byte [] b = byte ใหม่ [10]; ในขณะที่ ((len = bis.read (b))! = -1) {bos.write (b, 0, len);} bos.flush () {fis.close (); fos.close (); bis.close (); bos.close ();} catch (ioexception e) {}}}}} File Copy Retraction Class:
แพ็คเกจ guuze; นำเข้า java.io.file; คลาสสาธารณะ remoVetArgetFile {โมฆะสาธารณะคงที่ startDelete (พา ธ สตริง) {ไฟล์ไฟล์ = ไฟล์ใหม่ (พา ธ ); deleteFile (ไฟล์);} โมฆะส่วนตัว deleteFile (ไฟล์) {// // อย่าจดจำโฟลเดอร์ของพา ธ ถ้า (ไฟล์) ลบ file.delete ();} อื่นถ้า (file.isdirectory ()) {file [] files = file.listfiles (); สำหรับ (int i = 0; i <files.length; i ++) {// ถ้าไม่ใช่ไฟล์ iterate deleetefile (ไฟล์ [i]);}}}}}ข้างต้นคือการเปลี่ยนชื่อแบทช์ไฟล์ Java และการแยกแบทช์ของไฟล์ประเภทเฉพาะที่แนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!