أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية القيام بإدخال/إخراج الملف الأساسية في Visual c + + أو Visual c + +.NET

هام: تمت ترجمة هذه المقالة باستخدام برامج مايكروسوفت للترجمة الآلية ومن المحتمل ان يتم تحريرها او تدقيقها بعد ذلك من خلال تكنولوجيا منصة مجموعات الترجمة(CTF) او من خلال مترجم بشري. تقدم لك شركة مايكروسوفت هذه المقالات المترجمة بشكل آلي او بالترجمة البشرية او بعد تحريرها وتدقيقها من قبل مجموعات الترجمة حتى تمكنكم من الوصول إلى جميع المقالات الموجودة في قواعد المعرفة لديها بلغات مختلفة. إلا أن المقالات المترجمة قد تحتوي على أخطاء في المفردات او بناء الجمل او النحو. وعليه، فإن شركة مايكروسوفت ليست مسؤولة عن اية أخطاء او عدم دقة في الترجمة او أية أضرار قد تحدث نتيجة أخطاء في ترجمة محتويات النص او استخدامه من قبل العملاء.

اضغط هنا لرابط المقالة باللغة الانجليزية307398
Microsoft Visual c + +.NET 2005/2008 ECMA C+ +/CLI نسخة من هذه المقالة، راجع 950617.
للحصول على إصدار Microsoft Visual C#.NET هذا المقالات، راجع 304430.
للمرئي Microsoft الإصدار.NET الأساسية من هذه المقالة، راجع 304427.
تشير هذه المقالة إلى مكتبة الفئات الخاصة ب Microsoft.NET Framework مساحات الأسماء التالية:
  • System::ComponentModel
  • System::Windows::Forms
  • System::Drawing
الموجز
توضح هذه المقالة خطوة بخطوة كيفية القيام بستة basic ملف عمليات الإدخال/الإخراج (I/O) في Microsoft Visual c + + 2005 أو في Microsoft Visual c + +.NET. إذا كنت مستخدماً جديداً ل.NET Framework، سوف تجد أن طراز الكائن لعمليات الملف في.NET Framework يشبه FileSystemObject (FSO) أن شعبية مع العديد من المطورين Microsoft Visual Studio 6.0. إلى جعل الانتقال أسهل والوظائف التي هو موضح في هذا تستند المقالة إلى مقالة "قاعدة المعارف ل Microsoft" التالية:
186118 كيفية استخدام FileSystemObject مع Visual Basic
لا يزال يمكنك استخدام FileSystemObject في.NET Framework. لأن FileSystemObject أحد مكونات طراز كائن مكون (COM)، يتطلب أن إطار عمل.NET يتم الوصول إلى الكائن خلال طبقة إمكانية التشغيل المتداخل. برنامج تضمين ليقوم بإنشاء إطار عمل.NET المكون لك إذا كنت تريد استخدامه. ومع ذلك، توفر الفئة الملف والفئة FileInfoالدليل، DirectoryInfo الفئات والفئات الأخرى ذات الصلة في.NET Framework، وظيفة غير متوفرة مع FSO، دون الزائد طبقة إمكانية التشغيل المتداخل.

متطلبات

توضح القائمة التالية الأجهزة الموصى بها، البرامج، البنية الأساسية للشبكة، وحزم الخدمات المطلوبة:
  • Visual 2005 c + + أو Visual c + +.NET

عمليات إدخال/إخراج الملف الواضحة

توضح الأمثلة في هذه المقالة عمليات إدخال/إخراج الملف الأساسية. يصف القسم "Step-by-Step مثال" كيفية إنشاء برنامج نموذج الذي يوضح عمليات إدخال/إخراج الملف الستة التالية:
  • قراءة ملف نصي
  • كتابة ملف نصي
  • عرض معلومات الملف
  • قائمة محركات الأقراص
  • قائمة المجلدات
  • سرد الملفات

قراءة ملف نصي

يستخدم نموذج التعليمة البرمجية التالي فئة StreamReader لقراءة ملف نصي. تكون محتويات الملف إضافة عنصر تحكم مربع قائمة . يتم استخدام كتلة try... catch لتنبيه البرنامج إذا كان الملف فارغ. هناك هناك عدة طرق لتحديد عند الوصول إلى نهاية الملف; هذه العينة يستخدم أسلوب الاطلاع لفحص السطر التالي قبل قراءته.
  listBox1->Items->Clear();   	try   	{    		String* textFile = String::Concat(windir,                                    (S"\\mytest.txt")); 	        StreamReader *reader=new  StreamReader(textFile);		do		{		    listBox1->Items->Add(reader->ReadLine());		}   		while(reader->Peek() != -1);	}               	catch (System::Exception *e)	{ 		listBox1->Items->Add(e);	}}				
ملاحظة في Visual c + + 2005، يجب عليك إضافة اللغة وقت التشغيل دعم برنامج التحويل البرمجي خيار (/clr:oldSyntax) ترجمة نموذج التعليمات البرمجية السابق ك "c + + مدارة" بنجاح.لإضافة الشائعة لغة وقت التشغيل دعم برنامج التحويل البرمجي الخيار، اتبع الخطوات التالية:
  1. انقر فوق المشروع، ثم انقر فوقاسم المشروع خصائص.

    ملاحظةاسم المشروع عنصرا نائبا لاسم المشروع.
  2. قم بتوسيع خصائص التكوين، ثم انقر فوقعام.
  3. في الجزء الأيسر، انقر لتحديد دعم وقت تشغيل اللغة العامة, بناء الجملة القديمة (/clr: oldsyntax) فيدعم "وقت تشغيل اللغة" العامة إعدادات المشروع.
  4. انقر فوقتطبيق، ثم انقر فوق موافق.
لمزيد من المعلومات حول خيارات برنامج التحويل البرمجي دعم وقت تشغيل اللغة العامة، قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب:

كتابة ملف نصي

يستخدم هذا نموذج التعليمات البرمجية فئة StreamWriter لإنشاء والكتابة إلى ملف. إذا كان لديك موجود الملف، يمكنك فتحه بنفس الطريقة.
StreamWriter* pwriter = new StreamWriter(S"c:\\KBTest.txt");pwriter->WriteLine(S"File created using StreamWriter class.");pwriter->Close();listBox1->Items->Clear();String *filew = new String(S"File Written to C:\\KBTest.txt");listBox1->Items->Add(filew);				

عرض معلومات الملف

يستخدم هذا نموذج التعليمة البرمجية فئة FileInfo الوصول إلى خصائص الملف. يتم استخدام Notepad.exe في هذا عينة. تظهر الخصائص في عنصر تحكم ListBox .
 listBox1->Items->Clear(); String* testfile = String::Concat(windir, (S"\\notepad.exe"));  FileInfo *pFileProps  =new FileInfo(testfile); listBox1->Items->Add(String::Concat(S"File Name = ", (pFileProps->get_FullName() )) ); listBox1->Items->Add(String::Concat(S"Creation Time = ", (pFileProps->get_CreationTime() ).ToString()) ); listBox1->Items->Add(String::Concat(S"Last Access Time = "  ,(pFileProps->get_LastAccessTime() ).ToString()) ); listBox1->Items->Add(String::Concat(S"Last Write Time = ", (pFileProps->get_LastWriteTime() ).ToString()) ); listBox1->Items->Add(String::Concat(S"Size = ", (pFileProps->get_Length() ).ToString()) );				

قائمة محركات الأقراص

يستخدم نموذج التعليمات البرمجية هذه فئات الدليل و محرك لسرد محركات أقراص منطقية على نظام. لهذه العينة، تظهر النتائج في عنصر تحكم ListBox .
  listBox1->Items->Clear();  String* drives[] = Directory::GetLogicalDrives();  int numDrives = drives->get_Length();  for (int i=0; i<numDrives; i++)  {	listBox1->Items->Add(drives[i]);  } 				

القائمة الفرعية

يستخدم نموذج التعليمات البرمجية هذا الأسلوب GetDirectories فئة الدليل للحصول على قائمة المجلدات.
listBox1->Items->Clear();String* dirs[] = Directory::GetDirectories(windir);int numDirs = dirs->get_Length();for (int i=0; i<numDirs; i++){listBox1->Items->Add(dirs[i]);}				

سرد الملفات

يستخدم هذا نموذج التعليمة البرمجية أسلوب GetFiles فئة الدليل للحصول على قائمة بالملفات.
listBox1->Items->Clear();String* files[]= Directory::GetFiles(this->windir);int numFiles = files->get_Length();for (int i=0; i<numFiles; i++){  listBox1->Items->Add(files[i]);}				
يمكن حدوث خطأ في العديد من الأشياء عندما يحصل مستخدم الوصول إلى الملفات. الملفات قد لا تكون موجودة، قد تكون الملفات قيد الاستخدام أو قد لا يكون المستخدمين حقوق على ملفات المجلدات التي تحاول الوصول إليه. خذ بعين الاعتبار هذه الإمكانيات عند كتابة تعليمات برمجية لمعالجة الاستثناءات التي قد يمكن إنشاء.

مثال خطوة بخطوة

  1. بدء تشغيل Microsoft Visual c + +.NET أو Microsoft Visual Studio 2005 Microsoft Visual Studio 2005 Express Edition.
  2. على ملف ، أشر إلىجديد، ثم انقر فوق المشروع.
  3. ضمن أنواع المشاريع، انقر فوقمشاريع visual c + +. ضمن قوالب ، انقر فوقتطبيق نماذج Windows (.NET).

    ملاحظة في Visual Studio 2005، انقر فوقVisual c + + ضمن أنواع المشاريع. ضمن قوالب، انقر فوقتطبيق نماذج Windows.
  4. نوع KB307398 فياسم ، اكتب C:\ فيالموقع مربع، ومن ثم انقر فوقموافق.
  5. افتح النموذج Form1 في التصميم عرض، ومن ثم اضغط F4 لفتح إطار بروبيرتريس.
  6. في الإطار خصائص، قم بتوسيع حجممجلد. في عرض ، اكتب 700. في الارتفاع ، اكتب320.
  7. قم بإضافة حقل مربع القائمة عنصر التحكم وستةزر عناصر التحكم إلى Form1.

    ملاحظة لعرض مربع الأدوات، انقر فوق مربع الأدوات على طريقة العرض القائمة.
  8. في الإطار خصائص، قم بتغييرالموقع، اسم، حجم،TabIndex، و النص خصائص هذه عناصر التحكم كما يلي:
    معرف عنصر التحكمالموقعاسمحجمTabIndexالنص
    button1500، 32button1112 231قراءة ملف نصي
    button2500، 64button2112 232كتابة ملف نصي
    button3500، 96button3112 233عرض معلومات الملف
    button4500، 128button4112 234قائمة محركات الأقراص
    button5500، 160button5112 235القائمة الفرعية
    button6500، 192button6112 236سرد الملفات
    listBox124، 24listBox1450، 2000listBox1
  9. افتح الملف Form1.h. في تعريف فئة Form1 ، قم بتعريف متغير سلسلة خاصة واحد مع التعليمات البرمجية التالية:
    private:		String *windir;
  10. في منشئ فئة Form1 أضف التعليمة البرمجية التالية:
    windir = System::Environment::GetEnvironmentVariable("windir");
  11. لتنفيذ عمليات إخراج ملف الإدخال، قم بإضافة system:: io مساحة الاسم.
  12. اضغط SHIFT + F7 لفتح Form1 في طريقة عرض التصميم. انقر نقراً مزدوجاً فوق الزر قراءة ملف نصي ، ثم قم بلصق التعليمة البرمجية التالية:

    ملاحظة في Visual c + + 2005، انقر فوق مصمم في طريقة العرض القائمة.
    // How to read a text file:// Use try...catch to deal with a 0 byte file or a non-existant file.listBox1->Items->Clear();try   {    	String* textFile = String::Concat(windir, (S"\\mytest.txt")); 	StreamReader *reader=new  StreamReader(textFile);	do	{	listBox1->Items->Add(reader->ReadLine());	}   	while(reader->Peek() != -1);}    catch(FileNotFoundException *ex){	listBox1->Items->Add(ex);}          catch (System::Exception *e){ 	listBox1->Items->Add(e);}
  13. في طريقة العرض تصميم Form1، انقر نقراً مزدوجاً فوق الزر كتابة ملف نصي ثم قم بلصق التعليمة البرمجية التالية:
    // This demonstrates how to create and to write to a text file.StreamWriter* pwriter = new StreamWriter(S"c:\\KBTest.txt");pwriter->WriteLine(S"The file was created by using the StreamWriter class.");pwriter->Close();listBox1->Items->Clear();String *filew = new String(S"File written to C:\\KBTest.txt");listBox1->Items->Add(filew);
  14. في طريقة العرض تصميم Form1، انقر نقراً مزدوجاً فوق الزر عرض معلومات الملف ثم قم بلصق التعليمة البرمجية التالية في الأسلوب:
    // This code retrieves file properties. The example uses Notepad.exe.listBox1->Items->Clear();String* testfile = String::Concat(windir, (S"\\notepad.exe")); FileInfo *pFileProps  =new FileInfo(testfile);listBox1->Items->Add(String::Concat(S"File Name = ", (pFileProps->get_FullName() )) );listBox1->Items->Add(String::Concat(S"Creation Time = ", (pFileProps->get_CreationTime() ).ToString()) );listBox1->Items->Add(String::Concat(S"Last Access Time = "  ,(pFileProps->get_LastAccessTime() ).ToString()) );listBox1->Items->Add(String::Concat(S"Last Write Time = ", (pFileProps->get_LastWriteTime() ).ToString()) );listBox1->Items->Add(String::Concat(S"Size = ", (pFileProps->get_Length() ).ToString()) );
  15. في طريقة العرض تصميم Form1، انقر نقراً مزدوجاً فوق زر قائمة محركات الأقراص ثم قم بلصق التعليمة البرمجية التالية:
    // This demonstrates how to obtain a list of disk drives.listBox1->Items->Clear();String* drives[] = Directory::GetLogicalDrives();int numDrives = drives->get_Length();for (int i=0; i<numDrives; i++){	listBox1->Items->Add(drives[i]);}
  16. في طريقة العرض تصميم Form1، انقر نقراً مزدوجاً فوق الزر قائمة المجلدات الفرعية ثم قم بلصق التعليمة البرمجية التالية:
    // This code obtains a list of folders. This example uses the Windows folder.listBox1->Items->Clear();String* dirs[] = Directory::GetDirectories(windir);int numDirs = dirs->get_Length();for (int i=0; i<numDirs; i++){	listBox1->Items->Add(dirs[i]);                                                    }
  17. في طريقة العرض تصميم Form1، انقر نقراً مزدوجاً فوق زر قائمة الملفات ثم قم بلصق التعليمة البرمجية التالية:
    // This code obtains a list of files. This example uses the Windows folder.listBox1->Items->Clear();String* files[]= Directory::GetFiles(this->windir);int numFiles = files->get_Length();for (int i=0; i<numFiles; i++){	listBox1->Items->Add(files[i]);}
  18. لإنشاء وتشغيل البرنامج، اضغط على CTRL + F5.

نموذج التعليمات البرمجية كاملة

ملاحظة يجب تغيير التعليمات البرمجية التالية عند تشغيل في Visual c + + 2005.
//Form1.h#pragma oncenamespace KB307398{	using namespace System;	using namespace System::IO;	using namespace System::ComponentModel;	using namespace System::Collections;	using namespace System::Windows::Forms;	using namespace System::Data;	using namespace System::Drawing;	/// <summary> 	/// Summary for Form1	///	/// WARNING: If you change the name of this class, you will need to change the 	///          'Resource File Name' property for the managed resource compiler tool 	///          associated with all .resx files this class depends on.  Otherwise,	///          the designers will not be able to interact properly with localized	///          resources associated with this form.	/// </summary>	public __gc class Form1 : public System::Windows::Forms::Form	{	private:		String *windir;	public:		Form1(void)		{			windir = System::Environment::GetEnvironmentVariable("windir");			InitializeComponent();		}  	protected:		void Dispose(Boolean disposing)		{			if (disposing && components)			{				components->Dispose();			}			__super::Dispose(disposing);		}	private: System::Windows::Forms::Button *  button1;	private: System::Windows::Forms::Button *  button2;	private: System::Windows::Forms::Button *  button3;	private: System::Windows::Forms::Button *  button4;	private: System::Windows::Forms::Button *  button5;	private: System::Windows::Forms::Button *  button6;	private: System::Windows::Forms::ListBox *  listBox1;	private:		/// <summary>		/// Required designer variable.		/// </summary>		System::ComponentModel::Container * components;		/// <summary>		/// Required method for Designer support - do not modify		/// the contents of this method with the code editor.		/// </summary>		void InitializeComponent(void)		{			this->button1 = new System::Windows::Forms::Button();			this->button2 = new System::Windows::Forms::Button();			this->button3 = new System::Windows::Forms::Button();			this->button4 = new System::Windows::Forms::Button();			this->button5 = new System::Windows::Forms::Button();			this->button6 = new System::Windows::Forms::Button();			this->listBox1 = new System::Windows::Forms::ListBox();			this->SuspendLayout();			// 			// button1			// 			this->button1->Location = System::Drawing::Point(500, 32);			this->button1->Name = S"button1";			this->button1->Size = System::Drawing::Size(112, 23);			this->button1->TabIndex = 1;			this->button1->Text = S"Read Text File";			this->button1->Click += new System::EventHandler(this, button1_Click);			// 			// button2			// 			this->button2->Location = System::Drawing::Point(500, 64);			this->button2->Name = S"button2";			this->button2->Size = System::Drawing::Size(112, 23);			this->button2->TabIndex = 2;			this->button2->Text = S"Write Text File";			this->button2->Click += new System::EventHandler(this, button2_Click);			// 			// button3			// 			this->button3->Location = System::Drawing::Point(500, 96);			this->button3->Name = S"button3";			this->button3->Size = System::Drawing::Size(112, 23);			this->button3->TabIndex = 3;			this->button3->Text = S"View File Information";			this->button3->Click += new System::EventHandler(this, button3_Click);			// 			// button4			// 			this->button4->Location = System::Drawing::Point(500, 128);			this->button4->Name = S"button4";			this->button4->Size = System::Drawing::Size(112, 23);			this->button4->TabIndex = 4;			this->button4->Text = S"List Drives";			this->button4->Click += new System::EventHandler(this, button4_Click);			// 			// button5			// 			this->button5->Location = System::Drawing::Point(500, 160);			this->button5->Name = S"button5";			this->button5->Size = System::Drawing::Size(112, 23);			this->button5->TabIndex = 5;			this->button5->Text = S"List Subfolders";			this->button5->Click += new System::EventHandler(this, button5_Click);			// 			// button6			// 			this->button6->Location = System::Drawing::Point(500, 188);			this->button6->Name = S"button6";			this->button6->Size = System::Drawing::Size(112, 23);			this->button6->TabIndex = 6;			this->button6->Text = S"List Files";			this->button6->Click += new System::EventHandler(this, button6_Click);			// 			// listBox1			// 			this->listBox1->Location = System::Drawing::Point(24, 24);			this->listBox1->Name = S"listBox1";			this->listBox1->Size = System::Drawing::Size(450, 199);			this->listBox1->TabIndex = 0;			// 			// Form1			// 			this->AutoScaleBaseSize = System::Drawing::Size(5, 13);			this->ClientSize = System::Drawing::Size(692, 293);			this->Controls->Add(this->listBox1);			this->Controls->Add(this->button6);			this->Controls->Add(this->button5);			this->Controls->Add(this->button4);			this->Controls->Add(this->button3);			this->Controls->Add(this->button2);			this->Controls->Add(this->button1);			this->Name = S"Form1";			this->Text = S"Form1";			this->ResumeLayout(false);		}		private: System::Void button1_Click(System::Object *  sender, System::EventArgs *  e)			 {// This code shows how to read a text file.// The try...catch code is to deal with a 0 byte file or a non-existant file.listBox1->Items->Clear();				try   				{    					String* textFile = String::Concat(windir, (S"\\mytest.txt")); 					StreamReader *reader=new  StreamReader(textFile);					do					{					listBox1->Items->Add(reader->ReadLine());					}   					while(reader->Peek() != -1);				} 				catch(FileNotFoundException *ex)				{					listBox1->Items->Add(ex);				}	     				        				catch (System::Exception *e)				{ 					listBox1->Items->Add(e);				}			 }private: System::Void button2_Click(System::Object *  sender, System::EventArgs *  e)		 {// This code demonstrates how to create and to write to a text file.StreamWriter* pwriter = new StreamWriter(S"c:\\KBTest.txt");pwriter->WriteLine(S"The file was created by using the StreamWriter class.");pwriter->Close();listBox1->Items->Clear();String *filew = new String(S"The file was written to C:\\KBTest.txt");listBox1->Items->Add(filew);		 }private: System::Void button3_Click(System::Object *  sender, System::EventArgs *  e)		 {// This code retrieves file properties. This example uses Notepad.exe.listBox1->Items->Clear();String* testfile = String::Concat(windir, (S"\\notepad.exe")); FileInfo *pFileProps  =new FileInfo(testfile);listBox1->Items->Add(String::Concat(S"File Name = ", (pFileProps->get_FullName() )) );listBox1->Items->Add(String::Concat(S"Creation Time = ", (pFileProps->get_CreationTime() ).ToString()) );listBox1->Items->Add(String::Concat(S"Last Access Time = "  ,(pFileProps->get_LastAccessTime() ).ToString()) );listBox1->Items->Add(String::Concat(S"Last Write Time = ", (pFileProps->get_LastWriteTime() ).ToString()) );listBox1->Items->Add(String::Concat(S"Size = ", (pFileProps->get_Length() ).ToString()) );		 }private: System::Void button4_Click(System::Object *  sender, System::EventArgs *  e)		 {// The code demonstrates how to obtain a list of disk drives.listBox1->Items->Clear();String* drives[] = Directory::GetLogicalDrives();int numDrives = drives->get_Length();for (int i=0; i<numDrives; i++){	listBox1->Items->Add(drives[i]);}		 }private: System::Void button5_Click(System::Object *  sender, System::EventArgs *  e)		 {// This code obtains a list of folders. This example uses the Windows folder.listBox1->Items->Clear();String* dirs[] = Directory::GetDirectories(windir);int numDirs = dirs->get_Length();for (int i=0; i<numDirs; i++){	listBox1->Items->Add(dirs[i]);                                                    }		 }private: System::Void button6_Click(System::Object *  sender, System::EventArgs *  e)		 {// This code obtains a list of files. This example uses the Windows folder.listBox1->Items->Clear();String* files[]= Directory::GetFiles(this->windir);int numFiles = files->get_Length();for (int i=0; i<numFiles; i++){	listBox1->Items->Add(files[i]);}		 }};}//Form1.cpp#include "stdafx.h"#include "Form1.h"#include <windows.h>using namespace KB307398;int APIENTRY _tWinMain(HINSTANCE hInstance,                     HINSTANCE hPrevInstance,                     LPTSTR    lpCmdLine,                     int       nCmdShow){	System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA;	Application::Run(new Form1());	return 0;}
مراجع
لمزيد من المعلومات، قم بزيارة موقع Microsoft التالي على الويب: لمزيد من المعلومات حول كيفية إنشاء نماذج Windows في الإدارة ملحقات ل c + +، راجع نموذج "ماناجيدكوينفورمويز" في Visual Studio.NET تعليمات.

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 307398 - آخر مراجعة: 06/28/2013 01:18:00 - المراجعة: 5.0

Microsoft Visual C++ 2008 Express Edition, Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition

  • kbwindowsforms kbforms kbio kbfileio kbhowtomaster kbnewsgrouplink kbmt KB307398 KbMtar
تعليقات
.clickstreamTracker.init(); html>p;t=">