عند تطوير تطبيقات الويب، غالبًا ما نحتاج إلى معالجة محركات الأقراص والمجلدات والملفات في نظام الملفات، مثل جمع المعلومات المتعلقة بمحرك الأقراص وإنشاء المجلدات والملفات أو إضافتها أو نقلها أو حذفها، وما إلى ذلك. في VB6، يتم توفير نموذج كائن جديد يسمى FSO (كائن نظام الملفات) للوصول إلى نظام الملفات. يوفر هذا النموذج أداة تعتمد على الكائن، ومن خلال سلسلة من الخصائص والأساليب التي يوفرها، يمكننا إجراء عمليات متنوعة على نظام الملفات بشكل أكثر بساطة ومرونة في التطبيق.
1. مقدمة إلى FSO يتضمن نموذج كائن FSO الكائنات التالية:
كائن محرك الأقراص: يسمح بجمع المعلومات مثل المساحة المتوفرة ومشاركة أسماء محركات الأقراص مثل الأقراص الثابتة والأقراص المضغوطة المتصلة فعليًا بالنظام أو المتصلة منطقيًا بالنظام من خلال شبكة LAN.
كائن المجلد: يسمح لك بإنشاء المجلدات أو حذفها أو نقلها واستعلام النظام عن اسم المجلد ومساره وما إلى ذلك.
كائن الملفات: يسمح لك بإنشاء الملفات أو حذفها أو نقلها والاستعلام عن النظام لأسماء الملفات والمسارات وما إلى ذلك.
كائن TextStream: يسمح بإنشاء الملفات النصية وقراءتها وكتابتها.
كائن FileSystemObject: يوفر مجموعة كاملة من الأساليب لعمليات محرك الأقراص والمجلدات والملفات، ويمكن اعتباره مجموعة من الكائنات المذكورة أعلاه وغالبًا ما يستخدم جنبًا إلى جنب معها. تكرر العديد من الطرق المرتبطة بهذا الكائن تلك الموجودة في الكائنات الأربعة السابقة، حتى نتمكن من إجراء معظم العمليات على محركات الأقراص والمجلدات والملفات إما من خلال كائن FileSystemObject أو من خلال محرك الأقراص أو المجلد أو كائن الملف المقابل لتشغيل هذه المكونات. ينفذ نموذج FSO العمليات على نفس الكائن من خلال طريقتين، وتأثيرات التشغيل هي نفسها. والغرض من توفير هذه الوظيفة الزائدة عن الحاجة هو تحقيق أقصى قدر من مرونة البرمجة.
في هذه المقالة، سنشرح تشغيل الملفات النصية باستخدام كائن TextStream الخاص بنموذج كائن FSO.
(1) استخدم FileSystemObject للحصول على كائنات الملفات النصية 1. إنشاء مثيل كائن FileSystemObject لتنفيذ عمليات الملف، يجب عليك أولاً إنشاء مثيل كائن FileSystemObject لإنشاء ملف أو فتحه. التنسيق المحدد لإنشاء مثيل كائن FileSystemObject هو (مع أخذ AFileSystemObject) كمثال:
تعيين AFileSystemObject = CreateObject("Scripting.FileSystemObject")
2. استخدم FileSystemObject للحصول على كائن الملف النصي TextStream
يوفر FileSystemObject طريقتين للحصول على كائنات الملفات النصية TextStream، من بينها استخدام CreateTextFile لإنشاء الملفات، واستخدام OpenTextFile لفتح الملفات الموجودة، وتكون نتيجة الإرجاع لكلا الطريقتين هي مثيل لكائن TextStream يتم تنفيذها.
⑴إنشاء ملف جديد التنسيق المحدد لطريقة إنشاء ملف جديد هو (خذ AFileSystemObject كمثال):
AFilesystemObject.CreateTextFile (NewFileName، OverwriteExistingFile، IsUnicode)
في:
NewFileName هي قيمة سلسلة تحدد اسم الملف الذي سيتم إنشاؤه، وعادةً ما يكون المسار الفعلي للملف بالإضافة إلى اسم الملف، مثل C:webshareaspsampfiletest.txt
OverwriteExistingFile هي قيمة منطقية تشير إلى ما إذا كان سيتم الكتابة فوق الملف الأصلي في حالة وجود ملف بنفس الاسم. يمكن حذف هذه المعلمة، والقيمة الافتراضية هي False، مما يعني أنه لن تتم الكتابة فوق الملف الأصلي.
IsUnicode هي قيمة منطقية تشير إلى ما إذا كان الملف الذي سيتم إنشاؤه هو ملف ASCII أو ملف Unicode.
يمكن حذف هذه المعلمة، والمعامل الافتراضي هو False، وهو ملف ASCII.
⑵ فتح ملف موجود التنسيق المحدد لطريقة فتح ملف موجود هو (خذ AFileSystemObject كمثال):
AFilesystemObject.OpenTextFile (اسم الملف، IOMode، إنشاء، تنسيق)
في:
FileName هو قيمة سلسلة تحدد اسم الملف الذي سيتم فتحه، وعادةً ما يكون المسار الفعلي للملف بالإضافة إلى اسم الملف، C:filepathtest.txt
IOMode هي قيمة ثابتة، تشير إلى الغرض من فتح الملف، وForReading(1) تعني قراءة البيانات؛
ForAppending يعني استخدام لإضافة البيانات. يمكن حذف هذه المعلمة، والإعداد الافتراضي هو ForReading.
"إنشاء" هي قيمة منطقية تشير إلى ما إذا كان سيتم إنشاء ملف جديد عندما يكون الملف الذي سيتم فتحه غير موجود.
يمكن حذف هذه المعلمة، والقيمة الافتراضية هي False، مما يعني أنه لن يتم إنشاء ملف جديد.
يمثل التنسيق طريقة فتح الملف. قيمها ومعانيها المحتملة هي كما يلي:
TristateTrue: مفتوح في وضع Unicode.
TristateFalse: مفتوح في وضع ASCII.
TristateUseDefault: مفتوح في الوضع الافتراضي للنظام.
يمكن حذف هذه المعلمة، والمعامل الافتراضي هو TristateFalse، وهو وضع ASCII.
(اثنين). استخدام TextStream لعمليات الملفات بعد إنشاء ملف أو فتحه، يمكنك استخدام الطرق التي يوفرها الكائن TextStream لإجراء عمليات الملف الفعلية.
1. الطرق المستخدمة في عمليات الكتابة هي:
⑴اكتب (سلسلة)
يكتب السلسلة المحددة بواسطة السلسلة إلى الملف.
⑵ خط الكتابة (سلسلة)
يكتب السلسلة المحددة بواسطة السلسلة إلى الملف، ويكتب حرف السطر الجديد.
يمكن حذف سلسلة المعلمة، وفي هذه الحالة سيتم إدراج سطر فارغ في الملف.
⑶WriteBlankLines(NumOfLines)
قم بإدراج عدد من الأسطر الفارغة في الملف، ويتم تحديد عدد الأسطر بواسطة NumOfLines.
2. الأساليب وأساليب السمات المستخدمة لعمليات القراءة هي:
⑴AtEndOfLine
هذه السمة هي قيمة منطقية تشير إلى ما إذا كان مؤشر الملف يشير إلى نهاية السطر الحالي.
⑵AtEndOfStream
هذه السمة هي قيمة منطقية تشير إلى ما إذا كان مؤشر الملف يشير إلى نهاية الملف.
⑶ العمود
هذه السمة عبارة عن قيمة عددية تمثل موضع مؤشر الملف في السطر الحالي.
⑷الخط
هذه السمة هي قيمة عددية تمثل رقم السطر الذي يوجد به مؤشر الملف.
⑸ القراءة (عدد الأحرف)
تبدأ هذه الطريقة من الموضع الحالي للملف، وتقرأ عددًا من الأحرف المحددة بواسطة عدد NumOfCharacters، وترجع سلسلة.
⑹خط القراءة
تبدأ هذه الطريقة من الموضع الحالي للملف، وتقرأ محتويات السطر الحالي حتى نهاية السطر، وتقوم بإرجاع سلسلة.
⑺اقرأ الكل
تبدأ هذه الطريقة من الموضع الحالي، وتقرأ محتويات الملف بأكمله حتى نهاية الملف، وتقوم بإرجاع سلسلة.
⑻ تخطي (عدد الأحرف)
تبدأ هذه الطريقة من الموضع الحالي للملف وتتخطى عددًا من الأحرف المحددة بواسطة رقم NumOfCharacters.
⑼ سكيبلاين
تبدأ هذه الطريقة من الموضع الحالي للملف وتتخطى محتويات السطر الحالي.
3. الطرق المستخدمة لإغلاق الملفات هي:
⑴ إغلاق
أغلق الملفات التي تم إنشاؤها أو فتحها بالفعل.
(3) ما يلي هو مثال لتوضيح كيفية استخدام FSO لقراءة الملفات النصية وحفظها في قاعدة البيانات:
1. قم أولاً بإنشاء صفحة لقراءة مسار الملف: file.htm
...
<FORM METHOD=POST ACTION= "upFile .asp" >
<div align="center"> <br>
<br>
<br>
<br>
<input type = "file" name = "path" size = "40">
<INPUT TYPE = "إرسال" " name ="dr" value="Import information">
</div>
</FORM>
…
2. اكتب الكود لحفظ القيمة النصية التي تم الحصول عليها في قاعدة البيانات: upFile.asp
<%Response .Buffer=true%>
<!--#include file="adovbs.inc"-->
<%
strConn="DSN=DataSourceName"
set Conn=Server.CreateObject("ADODB.Connection")
Conn.open strConn
set ObjComm =Server.CreateObject("ADODB.Command")
ObjComm.CommandText="sp_AddMsg" 'استدعاء الإجراء المخزن
ObjComm.CommandType=adCmdStoredProc
تعيين ObjComm.ActiveConnection=Conn
''''''''''إنشاء إدخال و معلمات الإخراج'' '' ''''''''''''''
Set ObjParamECom=ObjComm.CreateParameter("WC_ECompanyName",adVarchar,adParamInput,100)
ObjComm.Parameters.Append ObjParamECom
'@in_ECompanyName Varchar(50), - اسم الشركة باللغة الإنجليزية
Set ObjParamAddr=ObjComm.CreateParameter("WC_Address",adVarchar,adParamInput,200)
ObjComm.Parameters.Append ObjParamAddr
'@in_Address Varchar(50), - عنوان الشركة
Set ObjParamCity=ObjComm.CreateParameter("WC_City" ,adVarchar,adParamInput, 100)
ObjComm.Parameters.Append ObjParamCity
'@in_City Varchar(50), --City
...
'''''''''' اكتمل إنشاء المعلمة''''''''' '''''' '''
%>
<%
dim AllText,strLine1,strLine2,strLine3
dim strpath,fileurl
fileurl=""
strpath=Trim(Request.form("path"))
fileurl=strpath
SET FSO=CreateObject( "Scripting.FileSystemObject")
SET ATextStream=FSO.OpenTextFile(fileurl,1,false,TristateFalse)
'''''''''استخراج البيانات'''''''''''''''' '''' ''''
افعل ذلك أثناء عدم ATextStream.AtEndOfStream
''''''تهيئة المتغيرات''''''''''''
strLine1=""
strLine2=""
strLine3=""
…
' '' ''''''''''''''''''''''''
ATextStream.SkipLine
ATextStream.Skip(11)
strLine1=Trim(ATextStream.ReadLine)
ATextStream.Skip(11) )
strLine2=Trim(ATextStream.ReadLine)
ATextStream.Skip(5)
strLine3=Trim(ATextStream.ReadLine)
…
'End if
''''''''''أضف المتغير إلى مجموعة المعلمات'''''' '' ''''
ObjParamECom.value=strLine1
ObjParamCCom.value=strLine2
ObjParamAddr.value=strLine3
...
''''''''''تنتهي العملية'''''''''''' ''' '''
ObjComm.Execute() 'تشغيل الأمر
LOOP
Response.write "<br>"+"استيراد المكتبة بنجاح! <a href=dolist.html>[متابعة الاستيراد]</a><br>"
set Conn=nothing
set FSO=nothing
set ATextStream=nothing
%>
المرفق: الإجراء المخزن رمز sp_AddMsg
CREATE PROCEDURE dbo.sp_AddMsg - استيراد المؤسسات الأجنبية المعلومات
(
@in_CompanyName Varchar(100)، - اسم الشركة
@in_Address Varchar(200)، - عنوان الشركة
@in_City Varchar(100)، - مدينة الشركة
...
)
كما
تم تعيين NOCOUNT عند
بدء النقل،
أدخل في Tb_WCLibrary (
WC_CompanyName
)،
WC_CCompanyName،
WC_Address،
…
)
VALUES(
@in_CompanyName،
@in_CCompanyName،
@in_Address،
…
)
IF @@ERROR <> 0
بداية
إعادة إرجاعالنقل
-1
نهاية
الالتزام بإرجاع
ترانزيت 0
SET NOCOUNT OFF
عند هذه النقطة، شرح النص الكامل هو انتهى، آمل أن يقدم هذا المقال بعض المساعدة للقراء.