Ako urobiť základné súbor vstupno-výstupných operácií v Visual C++ alebo Visual C++ .NET

Preklady článku Preklady článku
ID článku: 307398 - Zobraziť produkty, ktorých sa tento článok týka.
Pre Microsoft Visual C++ .NET 2005/2008 ECMA C+ +/ CLI verzie tohto článku, pozri 950617.
Pre Microsoft Visual C# .NET verzie tohto článok nájdete v 304430.
Pre Microsoft Visual Základné .NET verzie tohto článku, pozri 304427.
Tento článok sa vzťahuje na Tieto priestory názvov Microsoft .NET Framework triedy knižnica:
  • System::ComponentModel
  • System::Windows::Forms
  • System::drawing
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

Súhrn

Tento podrobný článok popisuje robiť šesť základné súbor vstup/výstup (I/O) operácie v Microsoft Visual C ++ 2005 alebo Microsoft Visual C++ .NET. Ak ste na platforme .NET Framework, nájdete že objektový model pre súbor operácií v platforme .NET Framework je podobná FileSystemObject (FSO) to je obľúbené u mnohých vývojárov Microsoft Visual Studio 6.0. Na na prechod ľahšie, funkcie, ktoré sa prejavuje v tejto článok je založený na nasledujúci článok databázy Microsoft Knowledge Base:
186118 Ako používať FileSystemObject s Visual Basic
Môžete stále používať FileSystemObject v platforme .NET Framework. Pretože FileSystemObject je súčasťou komponentu objekt Model (COM), rozhranie .NET Framework vy aduje, aby prístup k objektu sa cez tri vrstvy pre primárnu spoluprácu. .NET Framework generuje wrapper pre súčasti pre vás, ak chcete používať. Avšak, súbor triedy FileInfo triedy, adresár, DirectoryInfo triedy a iné príbuzné triedy v platforme .NET Framework, ponúkajú funkčnosť, ktorá nie je k dispozícii s FSO, bez režijných nákladov Pre primárnu spoluprácu vrstvy.

Požiadavky

Nasledujúci zoznam popisuje odporúčaný hardvér, softvér, sieťovej infraštruktúry a balíky service pack, ktoré sú potrebné:
  • Visual C ++ 2005 alebo Visual C++ .NET

Preukázané súbor vstupno-výstupných operácií

Príklady v tomto článku sa popisujú základné súbor vstupno-výstupných operácií. "Podrobný príklad" časť opisuje, ako vytvoriť vzorku program nasledujúcich šesť súbor vstupno-výstupných operácií, ktoré preukazujú:
  • Čítať textový súbor
  • Písať do textového súboru
  • Zobrazenie informácií o súbore
  • Zoznam diskov
  • Zoznam priečinkov
  • Zoznam súborov

Čítať textový súbor

Nasledujúci kód vzorky používa StreamReader trieda čítať textový súbor. Obsah súboru pridané do ovládací prvok ListBox . ... Skúste chytiť bloku sa používa na záznam program, ak súbor je prázdny. Tam mnoho spôsobov, ako zistiť, kedy je dosiahnutá konca súboru; Táto vzorka používa metódu Peek skúmať ďalší riadok pred čítania.
  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);
	}

}
				
Poznámka V Visual C ++ 2005, musíte pridať spoločný jazyk runtime podporu kompilátor možnosť (/clr:oldSyntax) úspešne zostaviť predchádzajúcej ukážke kódu ako riadené C++. Ak chcete pridať spoločný jazyk runtime podporu kompilátor možnosť, postupujte nasledovne:
  1. Kliknite na tlačidlo Projekt, a potom kliknite na tlačidloProjectName Vlastnosti.

    PoznámkaProjectName je zástupný symbol pre meno projektu.
  2. Rozšíriť Konfigurácia vlastností, a potom kliknite na tlačidloVšeobecné.
  3. Na pravej table, kliknite na položku Spoločný jazyk Runtime podporu, staré Syntax (/ clr:oldSyntax) vSpoločný jazyk Runtime podporu nastavenia projektu.
  4. Kliknite na tlačidloUplatňovať, a potom kliknite na tlačidlo ok.
Ďalšie informácie o spoločný jazyk runtime podporu kompilátor možnosti, nájdete na webovej lokalite webová lokalita Microsoft Developer Network (MSDN):
http://msdn2.Microsoft.com/en-us/library/k8d11d4s.aspx

Písať do textového súboru

Táto vzorka kódu používa StreamWriter trieda pre vytváranie a zapisovať do súboru. Ak máte existujúce vopred súbor, môžete ho otvoriť rovnakým spôsobom.
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);
				

Zobrazenie informácií o súbore

Táto vzorka kódu používa FileInfo triedy na prístup k vlastnosti súboru. Notepad.exe sa používa v tomto vzorky. Vlastnosti sa zobrazia v ovládacom prvku zoznamu .
 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()) );
				

Zoznam diskov

Táto vzorka kódu používa adresár a riadiť tried zoznam logických diskov v systéme. Pre tento vzorka, Výsledky sa zobrazia v ovládacom prvku zoznamu .
  listBox1->Items->Clear();
  String* drives[] = Directory::GetLogicalDrives();
  int numDrives = drives->get_Length();
  for (int i=0; i<numDrives; i++)
  {
	listBox1->Items->Add(drives[i]);
  } 
				

Zoznam podpriečinkov

Táto vzorka kódu používa GetDirectories metóda adresár triedy získať zoznam priečinkov.
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]);
}
				

Zoznam súborov

Táto vzorka kódu používa GetFiles metóda triedy adresára získať výpis súborov.
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]);
}
				
Mnohé veci môžu pokazit, keď používateľ získa prístup k súborom. Súbory možno neexistuje, súbory môžu byť v prevádzke, alebo používatelia nebudú mať práva súbory priečinkov, ktoré sa pokúšate získať prístup. Zvážte Tieto možnosti pri písaní kódu si spracovať výnimky, ktoré môžu byť generované.

Podrobný príklad

  1. Spustiť Microsoft Visual Studio .NET, Microsoft Visual Studio 2005 alebo Microsoft Visual C ++ 2005 Express Edition.
  2. Na Súbor ponuku, ukážte naNové, a potom kliknite na tlačidlo Projekt.
  3. Podľa Typy projektov, kliknite na tlačidloVisual C++ projektov. Podľa Šablóny oddiel, kliknúťAplikácie pre Windows Forms (.NET).

    Poznámka V Visual Studio 2005, klikniteVisual C++ podľa Typy projektov. Podľa Šablóny, kliknite na tlačidloFormy aplikácie Windows.
  4. Typ KB307398 vmeno Zadajte C:\ vUmiestnenie a potom kliknite na tlačidlook.
  5. Otvoriť Form1 formulár v dizajne Zobraziť, a potom stlačením klávesu F4 otvorte Propertries okno.
  6. V vlastnosti okno, rozbaľte Veľkosťpriečinok. V Šírka Zadajte 700. V Výšku Zadajte320.
  7. Pridať jedno ListBox kontroly a šesťTlačidlo kontroly na Form1.

    Poznámka Zobrazenie panela s nástrojmi, kliknite na tlačidlo Toolbox na Zobrazenie ponuka.
  8. V okne Vlastnosti zmeniťUmiestnenie, meno, Veľkosť,TabIndex, a Text vlastnosti týchto ovláda nasledovne:
    Zbaliť túto tabuľkuRozbaliť túto tabuľku
    Identifikácia ovládaciehoUmiestneniemenoVeľkosťTabIndexText
    Button1500, 32Button1112, 231Čítanie textových súborov
    button2500, 64button2112, 232Napísať textový súbor
    button3500, 96button3112, 233Zobrazenie informácií o súbore
    button4500, 128button4112, 234Zoznam jednotiek
    button5500, 160button5112, 235Zoznam podpriečinkov
    button6500, 192button6112, 236Zoznam súborov
    listBox124, 24listBox1450, 2000listBox1
  9. Otvorte súbor Form1.h. Vo vyhlásení Form1 triedy vyhlásil jeden súkromný reťazec premenná s nasledujúci kód:
    private:
    		String *windir;
  10. Konštruktor vtriede Form1 , pridajte nasledujúci kód:
    windir = System::Environment::GetEnvironmentVariable("windir");
  11. Vykonávať súbor vstup výstup operácie, pridať System::IO priestor názvov.
  12. Stlačte klávesy SHIFT + F7 otvoriť Form1 v Návrhové zobrazenie. Kliknite dvakrát na tlačidlo Čítať textový súbor , a potom prilepte nasledujúci kód:

    Poznámka V Visual C ++ 2005, kliknite Dizajnér v Zobrazenie ponuka.
    // 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. V Form1 návrhového zobrazenia, kliknite dvakrát na tlačidlo Napísať textový súbor , a potom prilepte nasledujúci kód:
    // 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. V Form1 návrhového zobrazenia, kliknite dvakrát na tlačidlo Zobrazenie informácií o súbore a potom prilepte nasledujúci kód v metóde:
    // 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. V Form1 návrhového zobrazenia, kliknite dvakrát na tlačidlo Zoznam disky a potom prilepte nasledujúci kód:
    // 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. V Form1 návrhového zobrazenia, kliknite dvakrát na tlačidlo Zoznam podpriečinkov , a potom prilepte nasledujúci kód:
    // 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. V Form1 návrhového zobrazenia, kliknite dvakrát na tlačidlo Zoznam súborov , a potom prilepte nasledujúci kód:
    // 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. Vybudovať a potom spustite program, stlačte klávesy CTRL + F5.

Kompletný kód vzorky

Poznámka Nasledujúci kód musíte zmeniť pri spustení v Visual C ++ 2005.
//Form1.h
#pragma once


namespace 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;
}

Odkazy

Pre viac informácií, navštívte nasledovnú webovú lokalitu spoločnosti Microsoft:
http://support.Microsoft.com/default.aspx?xmlid=FH;EN-US; vcnet
Ďalšie informácie o tom, ako vytvoriť Windows forms v spravované Rozšírenia pre C++, pozri "ManagedCWinFormWiz" vzorke v Visual Studio .NET pomoc.

Vlastnosti

ID článku: 307398 - Posledná kontrola: 28. júna 2013 - Revízia: 3.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Visual C++ 2008 Express Edition
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
Kľúčové slová: 
kbwindowsforms kbforms kbio kbfileio kbhowtomaster kbnewsgrouplink kbmt KB307398 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok je preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft a možno ho opraviť prostredníctvom technológie Community Translation Framework (CTF). Microsoft ponúka strojovo preložené články, články upravené komunitou aj články preložené prekladateľmi, aby zabezpečil prístup ku všetkým článkom databázy Knowledge Base vo viacerých jazykoch. Strojovo preložené články aj upravené články môžu obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky. Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené neprávnym prekladom obsahu alebo jeho použitím zo strany našich zákazníkov. Ďalšie informácie o technológii CTF nájdete na lokalite http://support.microsoft.com/gp/machine-translation-corrections/sk.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 307398

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com