ตัวอย่างของบทความนี้บอกวิธีการอ่านข้อมูลจากไฟล์ JAR ของ Java แบ่งปันสำหรับทุกคนสำหรับการอ้างอิงของคุณ ข้อมูลเฉพาะมีดังนี้:
ไฟล์ Java Archives (JAR) ขึ้นอยู่กับโซลูชั่นบรรจุภัณฑ์เทคโนโลยี Java พวกเขาอนุญาตให้นักพัฒนาแพ็คเนื้อหาที่เกี่ยวข้องทั้งหมด (. class, รูปภาพ, เสียง, ไฟล์สนับสนุน ฯลฯ ) ลงในไฟล์เดียว รูปแบบไฟล์ JAR รองรับการบีบอัดการรับรองความถูกต้องและเวอร์ชันและคุณสมบัติอื่น ๆ อีกมากมาย
มันเป็นเรื่องยุ่งยากที่จะได้รับเนื้อหาไฟล์ที่มีอยู่ในไฟล์ JAR แต่เป็นไปไม่ได้ เทคนิคนี้จะบอกวิธีรับไฟล์จากไฟล์ JAR เราจะได้รับไดเรกทอรีไฟล์ในไฟล์ JAR นี้ก่อนจากนั้นอ่านไฟล์ที่ระบุ
หากคุณคุ้นเคยกับรูปแบบ ZIP ทั่วไปคุณจะพบว่าไฟล์ JAR ไม่แตกต่างจากมันมากนัก ไฟล์ JAR มีวิธีการบรรจุหลายไฟล์ไปยังไฟล์เดียวและแต่ละไฟล์ที่บรรจุสามารถบีบอัดได้แยกกัน ไฟล์ JAR สามารถเพิ่มสิ่งที่เรียกว่า Manifest ซึ่งช่วยให้นักพัฒนาสามารถเพิ่มข้อมูลอื่น ๆ ที่เกี่ยวข้องกับเนื้อหา ตัวอย่างเช่นรายการสามารถระบุไฟล์ในไฟล์ JAR เพื่อเริ่มเรียกใช้แอปพลิเคชันหรือระบุเวอร์ชันของไลบรารี
Java 2 SDK Standard Edition จัดเตรียมเครื่องมือ JAR ที่คุณสามารถอ่านและเขียนไฟล์ JAR ผ่านได้ จากนั้นคุณอาจต้องการอ่านและเขียนไฟล์ Jar ในโปรแกรมของคุณ (เทคนิคนี้เกี่ยวข้องกับเนื้อหาของการอ่านไฟล์ jar ในโปรแกรมเท่านั้น) มีความสุขมากคุณสามารถทำได้และคุณไม่จำเป็นต้องพิจารณาปัญหาการบีบอัดเพราะไลบรารีคลาสได้ช่วยคุณจัดการ ชั้นเรียนที่คุณต้องใช้อยู่ใน java.util.jar คลาสหลักที่จะใช้ที่นี่คือคลาส jarfile ซึ่งเป็นไฟล์. jar เอง แต่ละไฟล์ถูกอ้างถึงโดย Jarentry
ในตอนแรกให้ผ่านพารามิเตอร์เพื่อสร้างอินสแตนซ์ jarfile สำหรับตัวสร้างของ jarfile
โค้ดคัดลอกรหัสดังนี้: jarfile jarfile = new JarFile ("thefile.jar");
หรือคัดลอกรหัสรหัสดังนี้: ไฟล์ไฟล์ = ไฟล์ใหม่ ("thefile.jar");
JarFile jarFile = new JarFile (ไฟล์);
นอกจากนี้ยังมีตัวสร้างอื่น ๆ ที่สนับสนุนการตรวจสอบตัวตนและทำเครื่องหมายไฟล์เพื่อลบ อย่างไรก็ตามตัวสร้างเหล่านี้จะไม่เกี่ยวข้องที่นี่
หลังจากที่คุณได้รับการอ้างอิงถึงไฟล์ JAR คุณสามารถอ่านไดเรกทอรีของเนื้อหาได้ วิธีการรายการของ JarFile ส่งคืนวัตถุการแจงนับของรายการทั้งหมด
// นักแปลหมายเหตุ: enum เป็นคำหลักใน Java 5.0 ดังนั้นกรณีนี้ควรรวบรวมความล้มเหลวใน 5.0 enum = jarfile.entries ();
ดังที่ได้กล่าวไว้ก่อนหน้านี้แต่ละคนเป็น jarentry คลาสนี้มีวิธีการบางอย่างเช่น getName รับและ getcompressetsize
ลองยกตัวอย่างวิธีการใช้คุณสมบัติเหล่านี้ในโปรแกรม โปรแกรมต่อไปนี้แสดงรายการเนื้อหาของไฟล์ JAR และชื่อขนาดและขนาดของการบีบอัด (นี่คล้ายกับคำสั่ง JAR ด้วยพารามิเตอร์ "T" และ "V")
นำเข้า java.io.*; นำเข้า Java.util.*; System.out.println ("โปรดระบุชื่อไฟล์ Jar"); HasmoreElements ()) {กระบวนการ (enum.nextelement ());}} กระบวนการโมฆะแบบคงที่ส่วนตัว (Object OBJ) {arent entry entry = (jarentry) OBJ; ); System.out.println (ชื่อ + "" + size + "" "
หากคุณใช้ JCE.JAR ใน J2SE 1.4.1 เพื่อทดสอบโปรแกรม jardir ข้างต้นคุณควรเห็นผลลัพธ์ดังต่อไปนี้ (ควรแสดงไฟล์เพิ่มเติมที่ต่อไปนี้ ... ): ไฟล์เพิ่มเติม: ไฟล์เพิ่มเติม): ไฟล์เพิ่มเติม: ไฟล์เพิ่มเติม):
meta-inf/manifest.mf 5315 1910meta-inf/4jcejars.sf 5368 1958meta-inf/4jcejars.dsa 2207 1503meta-inf/0 2javax/0 0Javax/crypto/0 dhkey.class 209 185javax/crypto/อินเทอร์เฟซ/dhpublickey.class 265 215Javax/crypto/อินเตอร์เฟส/dhprivatekey.class 267 215Javax/crypto/เข้าสู่/เข้าสู่ Erfaces/pbekey
โปรดทราบว่าด้านบนของเนื้อหาอินพุตมีบรรทัดของ meta-inf ซึ่งเป็นข้อมูลการตรวจสอบความปลอดภัยและข้อมูลการตรวจสอบความปลอดภัย รายการที่มีขนาด 0 ไม่ใช่ไฟล์ แต่เป็นไดเรกทอรี
ในการอ่านเนื้อหาของไฟล์อย่างแท้จริงจากไฟล์ JAR คุณต้องได้รับอินพุตสตรีมวัตถุประสงค์ที่สอดคล้องกัน สิ่งนี้แตกต่างจาก Jarentry Jarentry มีข้อมูลรายการเท่านั้น แต่ไม่รวมเนื้อหาจริง สิ่งนี้คล้ายกับความแตกต่างระหว่างไฟล์และ FileInputStrateam เมื่อคุณเยี่ยมชมไฟล์เท่านั้นคุณจะไม่เปิดไฟล์ที่เกี่ยวข้อง นี่คือวิธีรับอินพุทสตรีมจากรายการ:
โค้ดคัดลอกรหัสดังนี้: inputStream input = jarFile.GetInputStream (รายการ);
หลังจากได้รับกระแสอินพุตคุณเพียงแค่ต้องอ่านเช่นการอ่านสตรีมอื่น ๆ หากเป็นโฟลว์ข้อความอย่าลืมใช้เครื่องอ่านเพื่อรับอักขระจากสตรีม สำหรับการไหลของไบต์เช่นรูปภาพคุณต้องอ่านโดยตรง
โปรแกรมต่อไปนี้แสดงเนื้อหาจากไฟล์ JAR เมื่อเรียกใช้โปรแกรมคุณต้องระบุชื่อไฟล์เพื่ออ่านจากไฟล์ JAR
นำเข้า Java.io.*; นำเข้า Java.util.jar.*; โปรดระบุชื่อไฟล์ Jar และไฟล์ที่จะอ่าน "); system.exit (-1);} jarfile jarfile = jarfile ใหม่ (args [0]); arent entry arntry = jarfile.getjarentry]); อินพุตอินพุต = jarfile .getInputStream (รายการรายการ ) (อินพุต); line = reader.readline ())!
สมมติว่าคุณมีไฟล์ jar ที่เรียกว่า myfiles.jar หนึ่งในนั้นเรียกว่าไฟล์ข้อความ Spider.txt แล้วสมมติว่า pider.txt มีข้อความต่อไปนี้:
แมงมุมบิตซี่มันวิ่งขึ้นไปบนน้ำพายมาจากฝนและล้างแมงมุมออกมา
เรียกใช้คำสั่งต่อไปนี้เพื่อแสดงเนื้อหาของไฟล์ข้อความในไฟล์ JAR:
โค้ดคัดลอกรหัสดังต่อไปนี้: Java Jarread myfiles.jar Spider.txt
หวังว่าบทความนี้จะเป็นประโยชน์กับการออกแบบโปรแกรม Java ของทุกคน