غالبًا ما تحتاج المشروعات إلى الوصول إلى المجلدات المشتركة ، مثل المجلدات المشتركة التي تخزن الصور والملفات ، وما إلى ذلك. كيفية قراءة مجلدات Windows المشتركة وكتابةها باستخدام Java؟
يمكن لـ Java استخدام Framework 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 ، وإنشاء مجلد: مشترك في أي مكان ، وقم بتعيينه على مشاركة ، وتعيين اسم المستخدم المشترك: مشاركة ، كلمة المرور: المسؤول.
(كيفية تعيين مجلد مشترك ضمن نظام التشغيل Windows 7: كيفية تعيين مجلد مشترك ضمن Windows 7: //www.vevb.com/os/windows/78034.html)
سواء كان مجلد مشترك لنظام التشغيل Windows أو Linux ، فإن رمز استخدام Java SMB للوصول إلى المجلدات المشتركة هو نفسه ، ولكن الطريقة التي تختلف بها Windows و Linux المجلدات المشتركة.
رمز الاختبار كما يلي:
inputStream في = null ؛ OutputStream Out = null ؛ حاول {// الحصول على ملف الصورة localfile = new file ("c:/testjpg") ؛ String remotephotourl = "smb: // share: admin@11/shrequedfolder/" ؛ // الدليل المشترك لتخزين الصور simpletformat fmt = new SimplEdateFormat ("YyyymmdDHHMMSSSS_") ؛ smbfile remotefile = new smbfile (remotephotourl + "/" + fmtformat (new date ()) + localFileGetName ()) ؛ RemoteFileConnect () ؛ // حاول الاتصال في = جديد bufferedInputStream (FileInputStream جديد (LocalFile)) ؛ Out = جديد bufferedoutputstream (smbfileOutputStream جديد (RemoteFile)) ؛ Byte [] Buffer = New Byte [4096] ؛ int len = 0 ؛ // قراءة طول بينما ((len = inread (buffer ، 0 ، bufferlength))! = -1) {outWrite (buffer ، 0 ، len) ؛ } outflush () ؛ // Fresh the Buffered Output Dream} catch (استثناء e) {String msg = "حدث خطأ:" + egetlocalizedMessage () ؛ SystemOutPrintln (MSG) ؛ } أخيرًا {try {if (out! = null) {outClose () ؛ } if (in! = null) {inclose () ؛ }} catch (استثناء e) {}}في الكود أعلاه ، يتم استخدام فئة SMBFile التي توفرها إطار JCIFS. يشبه هذا الفئة فئة ملف Java. يمكن باستخدام كائنات هذه الفئة التعامل مع قراءة وكتابة الملفات عن بُعد. استخدم كائن الملف لقراءة الملف المحلي ثم استخدم كائن SMBFile للكتابة إلى الملف البعيد. يمكن أن تحاول طريقة SMBFile's Connect () الاتصال بمجلد بعيد. إذا كان الحساب أو كلمة المرور خاطئة ، فسيتم طرح استثناء اتصال.
عند تنزيل ملف بعيد ، استخدم كائن SMBFile لقراءة الملف البعيد. الرمز كما يلي:
inputStream في = null ؛ bytearrayoutputstream out = null ؛ جرب {// إنشاء سلسلة كائن ملف عن بعد remotephotourl = "smb: // share: admin@11/sharedfolder/testjpg" ؛ smbfile remotefile = new smbfile (remotephotourl) ؛ RemoteFileConnect () ؛ // حاول الاتصال // إنشاء دفق ملف في = جديد bufferedInputStream (SMBFileInputStream جديد (RemoteFile)) ؛ out = جديد bytearrayoutputStream ((int) remoteFilelEllenge ()) ؛ // قراءة محتوى الملف بايت [] Buffer = New Byte [4096] ؛ int len = 0 ؛ // قراءة طول بينما ((len = inread (buffer ، 0 ، bufferlength))! = - 1) {outWrite (buffer ، 0 ، len) ؛ } outflush () ؛ . } catch (استثناء e) {string msg = "خطأ تنزيل الملف البعيد:" + egetlocalizedMessage () ؛ SystemOutPrintln (MSG) ؛ } أخيرًا {try {if (out! = null) {outClose () ؛ } if (in! = null) {inclose () ؛ }} catch (استثناء e) {}}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.