خواندن فایل ها در VBScript

بعد از این که فایل را باز نمودیم، می توانیم محتویات آن را بخوانیم.
برای خواندن یک فایل به یک آبجکت از نوع TextStream احتیاج داریم که حاصل باز کردن فایل است.
برای خواندن یک فایل متد های مختلفی وجود دارد که در زیر به آن ها می پردازیم. همه ی این متد ها متعلق به آبجکت TextStream است.

متد Read

متد Read از آبجکت TextStream ، کار خواندن یک فایل را انجام می دهد. طریقه ی فراخوانی این تابع به این صورت است:

StrWord = objOpenFile.Read(NumberOfCharachters)

متد Read به تعدادی که در آرگومان NumberOfCharachters مشخص شده (که یک عدد صحیح است)، کاراکتر را از فایل می خواند و به عنوان نتیجه، یک رشته به طول NumberOfCharachters را بر میگرداند.

در صورتی که NumberOfCharachters بزرگ تر از تعداد کاراکتر های موجود در فایل باشد، این متد تمام کاراکتر های باقیمانده در فایل را برمی گرداند.
این متد در نهایت اشاره گر فایل را به مکان بعد از آخرین کاراکتری که خوانده منتقل می کند.

نکته:

اشاره گر فایل یک اشاره گر مجازی است که مشخص می کند در هنگام خواندن یا نوشتن فایل، در هر لحظه در چه مکانی قرار داریم. تا ادامه ی خواند یا نوشتن از آن محل انجام گیرد. این اشاره گر توسط سیستم عامل تنظیم می شود.

اگر اشاره گر فایل در انتهای فایل باشد و کاراکتری برای خواندن موجود نباشد، فراخوانی متد باعث تولید یک خطا می شود.

خاصیت AtEndOfStream

خاصیت AtEndOfStream ، خاصیتی از آبجکت TextStream است. در هر لحظه، اگر اشاره گر فایل در انتهای فایل باشد (یعنی به آخر فایل رسیده باشیم) ، این خاصیت مقدار True را برمیگرداند. در غیر این صورت مقدار False vا بر میگرداند.
به کمک این خاصیت می توانیم بفهمیم که که کی به انتهای فایل می رسیم.
موقعی که مشغول خواندن فایل هستیم، باید مرتبا بررسی کنیم که آیا به انتهای فایل رسیده ایم یا خیر. زیرا در غیر اینصورت با خطا مواجه می شویم. برای این منظور از خاصیت AtEndOfStream استفاده می شود.

مثال:

برنامه ی زیر کاراکتر های فایل test.txt را 10 تا 10 تا می خواند و به صورت پیغام نشان می دهد. وقتی که به انتهای فایل رسید متوقف می شود. 

 1Dim ScriptFullName, TestFilePath, FSO, ThisFile, PathToThisFile
 2'First Get the path to the test.txt file
 3ScriptFullName = WScript.ScriptFullName
 4Set FSO = CreateObject("Scripting.FileSystemObject")
 5Set File = FSO.GetFile(ScriptFullName)
 6Set PathToThisFile = File.ParentFolder
 7TestFilePath = PathToThisFile & "\\test.txt"
 8'Now, we open the test.txt file and create a TextStream Object
 9Set TestFile = FSO.OpenTextFile(TestFilePath, 1)
10'Read the file. 5 chars each time
11Do While Not TestFile.AtEndOfStream
12  WScript.Echo TestFile.Read(10)
13Loop
14'Close the File
15TestFile.Close
16'Release allocated memory
17Set FSO = Nothing
18Set File = Nothing
19Set PathToThisFile = Nothing
20Set TestFile = Nothing

متد ReadLine

متد ReadLine از آبجکت TextStream، یک خط از فایل را می خواند و بر می گرداند. آرگومان ندارد

متد ReadAll

متد ReadAll از آبجکت Text Stream به یکباره تمامی محتویات فایل متنی را می خواند و یک رسته شامل کل محتویات فایل را برمیگرداند.
این متد معمولا برای فایل های کوچک به کار می رود. زیرا این متد از یک حافظه ی کوچک برای خواندن کل فایل استفاده می کند. لذا اگر فایل بزرگ باشد، ممکن است محتویات فایل در حافظه جا نشود. برای فایل های بزرگ بهتر است به صورت خط به خط و توسط متد ReadLine عمل خواند را انجام داد.

مثال:

برنامه ی زیر سورس خودش را خط به خط به صورت پیغام به کاربر نشان می دهد.

 1Const ForReading = 1
 2Const ForWriting = 2
 3Dim Fso, ThisFilePath, ThisFile
 4ThisFilePath = WScript.ScriptFullName
 5Set Fso = CreateObject("Scripting.FileSystemObject")
 6Set ThisFile = Fso.OpenTextFile(ThisFilePath, ForReading)
 7'Now Read the file
 8Do While Not ThisFile.AtEndOfStream
 9  strText = ThisFile.ReadLine
10  WScript.Echo strText
11Loop
12'Close the File
13ThisFile.Close
14'release allocated memory
15Set Fso = Nothing
16Set ThisFile = Nothing

توجه کنید که در دو تا فایل ضمیمه شده در این پست، تعداد زیادی پیغام به شما نشان داده می شود که ممکن است شما را کلافه کند 😄

مطالب مرتبط:

نظرات شما

قسمت نظرات با استفاده از سرویس دیسکاس پیاده سازی شده است. متاسفانه این سرویس از داخل ایران قابل دسترس نیست. لطفا از آی پی خارجی استفاده کنید.