โครงการมักจะต้องเข้าถึงโฟลเดอร์ที่ใช้ร่วมกันเช่นโฟลเดอร์ที่ใช้ร่วมกันจัดเก็บภาพถ่ายไฟล์ ฯลฯ ดังนั้นวิธีการอ่านและเขียนโฟลเดอร์ที่ใช้ร่วมกันของ Windows โดยใช้ Java
Java สามารถใช้เฟรมเวิร์ก JCIFs เพื่ออ่านและเขียนโฟลเดอร์ที่ใช้ร่วมกันของ Windows เฟรมเวิร์กนี้ช่วยให้เราสามารถเข้าถึงโฟลเดอร์ระยะไกลเช่นการเข้าถึงโฟลเดอร์ท้องถิ่น
URL ของ JCIFS: http://jcifs.samba.org/
JCIFS เป็นเฟรมเวิร์กโอเพ่นซอร์สที่พัฒนาขึ้นโดยใช้ Java บริสุทธิ์เข้าถึงโฟลเดอร์ระยะไกลผ่านโปรโตคอล SMB เฟรมเวิร์กนี้รองรับทั้งโฟลเดอร์ที่ใช้ร่วมกันของ Windows และโฟลเดอร์ที่แชร์ Linux อย่างไรก็ตามโฟลเดอร์ที่ใช้ร่วมกันของ Linux จำเป็นต้องมีการติดตั้งซอฟต์แวร์บริการ Samba (เว็บไซต์อย่างเป็นทางการ: http://www.samba.org/)
SMB (บล็อกข้อความเซิร์ฟเวอร์) เป็นโปรโตคอลการสื่อสารสำหรับการแชร์ไฟล์และเครื่องพิมพ์บนเครือข่ายพื้นที่ท้องถิ่น มันให้บริการการแชร์สำหรับไฟล์เครื่องพิมพ์และทรัพยากรอื่น ๆ ระหว่างคอมพิวเตอร์ที่แตกต่างกันในเครือข่ายท้องถิ่น โปรโตคอล SMB เป็นโปรโตคอลไคลเอนต์/เซิร์ฟเวอร์ซึ่งลูกค้าสามารถเข้าถึงระบบไฟล์ที่ใช้ร่วมกันเครื่องพิมพ์และทรัพยากรอื่น ๆ บนเซิร์ฟเวอร์ ด้วยการตั้งค่า "NetBIOS ผ่าน TCP/IP" Samba ไม่เพียง แต่แบ่งปันทรัพยากรกับโฮสต์เครือข่ายท้องถิ่น แต่ยังมีคอมพิวเตอร์ทั่วโลก
บทความนี้ส่วนใหญ่เรียนรู้วิธีการใช้ Java เพื่อเข้าถึงโฟลเดอร์ที่ใช้ร่วมกันสำหรับ Windows
ก่อนอื่นให้ค้นหาเครื่อง Windows สร้างโฟลเดอร์: SharedFolder ได้ทุกที่และตั้งค่าให้แชร์และตั้งค่าชื่อผู้ใช้ที่ใช้ร่วมกัน: แบ่งปันรหัสผ่าน: ผู้ดูแลระบบ
(วิธีตั้งค่าโฟลเดอร์ที่ใช้ร่วมกันภายใต้ Windows 7: วิธีตั้งค่าโฟลเดอร์ที่ใช้ร่วมกันภายใต้ Windows 7: //www.vevb.com/os/windows/78034.html)
ไม่ว่าจะเป็นโฟลเดอร์ที่ใช้ร่วมกันสำหรับ Windows หรือ Linux รหัสสำหรับการใช้ Java SMB เพื่อเข้าถึงโฟลเดอร์ที่ใช้ร่วมกันนั้นเหมือนกัน แต่วิธีที่ Windows และ Linux กำหนดค่าโฟลเดอร์ที่ใช้ร่วมกันนั้นแตกต่างกัน
รหัสทดสอบมีดังนี้:
inputStream ใน = null; outputstream out = null; ลอง {// รับไฟล์รูปภาพ localfile = ไฟล์ใหม่ ("c:/testjpg"); String remotePhotourl = "smb: // share: admin@11/SharedFolder/"; // ไดเรกทอรีที่ใช้ร่วมกันสำหรับการจัดเก็บรูปภาพ simpledateFormat fmt = new SimpledateFormat ("yyyymmddhhmmsssss_"); smbfile remotefile = ใหม่ smbfile (remotephotourl + "/" + fmtformat (วันที่ใหม่ ()) + localfilegetName ()); RemoteFileConnect (); // พยายามเชื่อมต่อใน = ใหม่ bufferedInputStream (ใหม่ FileInputStream (localFile)); out = ใหม่ bufferedOutputStream (ใหม่ SMBFileOutputStream (RemoteFile)); ไบต์ [] บัฟเฟอร์ = ไบต์ใหม่ [4096]; int len = 0; // อ่านความยาวในขณะที่ ((len = inread (บัฟเฟอร์, 0, bufferLength))! = -1) {outwrite (บัฟเฟอร์, 0, len); } outflush (); // สดสตรีมเอาต์พุตบัฟเฟอร์} catch (Exception e) {String msg = "เกิดข้อผิดพลาด:" + eGetLocalizedMessage (); SystemoutPrintln (ผงชูรส); } ในที่สุด {ลอง {ถ้า (ออก! = null) {outclose (); } if (in! = null) {inclose (); }} catch (exception e) {}}ในรหัสข้างต้นคลาส SMBFILE ที่จัดทำโดยเฟรมเวิร์ก JCIFS ใช้ คลาสนี้คล้ายกับคลาสไฟล์ Java การใช้วัตถุของคลาสนี้สามารถจัดการการอ่านและการเขียนไฟล์ระยะไกล ใช้วัตถุไฟล์เพื่ออ่านไฟล์โลคัลจากนั้นใช้วัตถุ SMBFILE เพื่อเขียนไปยังไฟล์ระยะไกล วิธีการเชื่อมต่อ () ของ SMBFile สามารถพยายามเชื่อมต่อกับโฟลเดอร์ระยะไกล หากบัญชีหรือรหัสผ่านไม่ถูกต้องข้อยกเว้นการเชื่อมต่อจะถูกโยนลงไป
เมื่อดาวน์โหลดไฟล์ระยะไกลให้ใช้วัตถุ SMBFILE เพื่ออ่านไฟล์ระยะไกล รหัสมีดังนี้:
inputStream ใน = null; ByteArrayOutputStream out = null; ลอง {// สร้างสตริงวัตถุไฟล์ระยะไกล remotePhotourl = "smb: // แบ่งปัน: admin@11/sharedfolder/testjpg"; smbfile remotefile = ใหม่ smbfile (remotephotourl); RemoteFileConnect (); // ลองเชื่อมต่อ // สร้างสตรีมไฟล์ใน = ใหม่ bufferedInputStream (ใหม่ SMBFileInputStream (RemoteFile)); out = ใหม่ byteArrayOutputStream ((int) remoteFileLeLength ()); // อ่านเนื้อหาไฟล์ไบต์ [] buffer = byte ใหม่ [4096]; int len = 0; // อ่านความยาวในขณะที่ ((len = inread (บัฟเฟอร์, 0, bufferLength))! = - 1) {outwrite (บัฟเฟอร์, 0, len); } outflush (); // ล้างกระแสเอาต์พุตบัฟเฟอร์กลับ OuttobyTearray (); } catch (exception e) {string msg = "ข้อผิดพลาดดาวน์โหลดไฟล์ระยะไกล:" + eGetLocalizedMessage (); SystemoutPrintln (ผงชูรส); } ในที่สุด {ลอง {ถ้า (ออก! = null) {outclose (); } if (in! = null) {inclose (); }} catch (exception e) {}}ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น