Jak provádět základní vstupně ve Visual C++ nebo Visual C++ .NET

Překlady článku Překlady článku
ID článku: 307398 - Produkty, které se vztahují k tomuto článku.
Pro aplikaci Microsoft Visual C++ .NET 2005/2008 ECMA C+ +/ CLI verzi tohoto článku v tématu 950617.
Microsoft Visual C# .NET verzi tohoto článek naleznete v tématu 304430.
Pro Microsoft Visual Základní .NET verzi tohoto článku v tématu 304427.
Tento článek se týká následujících oborů názvů knihovny tříd rozhraní.NET Framework společnosti Microsoft:
  • System::ComponentModel
  • System::Windows::Forms
  • System::Drawing
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento podrobný článek popisuje, jak provést šest basic soubor vstupně výstupních (I/O) operací v aplikaci Microsoft Visual C++ 2005 nebo Microsoft Visual C++ .NET. Pokud je rozhraní.NET Framework, zjistíte, že je podobný modelu objektu pro práci se soubory v rozhraní.NET Framework FileSystemObject (FSO), je velmi populární s mnoha vývojáři Microsoft Visual Studio 6.0. Chcete-li Přechod jednodušší, funkce, které je demonstrováno v tomto článek vychází z následujícího článku znalostní báze Microsoft Knowledge Base:
186118 Použití FileSystemObject s Visual Basic
V rozhraní.NET Framework můžete stále použít FileSystemObject . Protože FileSystemObject je komponenta modelu COM (Component Object), vyžaduje rozhraní.NET Framework přístup k objektu se prostřednictvím Interop layer. Rozhraní.NET Framework generuje wrapper pro komponenty pro vás, pokud chcete použít. Však nabízejí soubor třídy, třídy FileInfo , adresářDirectoryInfo tříd a dalších souvisejících tříd v rozhraní.NET Framework, funkce, která není k dispozici s FSO, bez režie Interop layer.

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a požadované aktualizace service Pack:
  • Visual C++ 2005 a Visual C++ .NET

Prokázané soubor vstupně-výstupní operace

Příklady v tomto článku jsou popsány základní soubor vstupně-výstupních operací. V oddílu "Příklad krok za krokem" popisuje, jak vytvořit ukázkový program demonstrující vstupně-výstupní šest následujících operací:
  • Čtení textového souboru
  • Zápis textového souboru
  • Zobrazení informací o souboru
  • Seznam diskových jednotek
  • Seznam složek
  • Seznam souborů

Čtení textového souboru

Následující ukázkový kód používá třídy StreamReader číst textový soubor. Obsah souboru Přidat do ovládacího prvku ListBox . Blok try... catch slouží k upozornění program, pokud je soubor prázdný. Zde je mnoho způsobů, jak zjistit, pokud je dosažen konec souboru. Tato ukázka používá metodu prohlížet před přečtením prozkoumat další řádek.
  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 aplikaci Visual C++ 2005 je nutné přidat běžné jazyk runtime podporu možnost kompilátoru (/clr:oldSyntax) úspěšně zkompilovat předchozí ukázka kódu jako Managed C++. Chcete-li přidat možnost kompilátoru podporu runtime běžné jazyk, postupujte takto:
  1. Klepněte na tlačítko Projekta potom klepněte na tlačítkoNázev projektu Vlastnosti.

    Poznámka:Název projektu je zástupný symbol pro název projektu.
  2. Rozbalte položku Vlastnosti konfiguracea potom klepněte na tlačítkoObecné.
  3. V pravém podokně klepnutím vyberte Common Language Runtime Support, staré syntaxe (/ CLR: oldSyntax) vCommon Language Runtime support nastavení projektu.
  4. Klepněte na tlačítkoPoužitía potom klepněte na tlačítko OK.
Další informace o možnostech podpory kompilátoru common language runtime navštivte následující Web společnosti Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx

Zápis textového souboru

Tento ukázkový kód používá třídu StreamWriter vytvořit a zapisovat do souboru. Pokud máte existující Soubor můžete otevřít jej stejným způsobem.
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);
				

Zobrazení informací o souboru

Tento ukázkový kód používá třída FileInfo pro přístup k vlastnosti souboru. To je používán Notepad.exe vzorek. Vlastnosti se zobrazí v ovládacím prvku 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()) );
				

Seznam diskových jednotek

Tento ukázkový kód používá adresáře a jednotky třídy seznam logické jednotky v systému. Pro tuto ukázku výsledky se zobrazí v ovládacím prvku 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]);
  } 
				

Seznam podsložek

Tento ukázkový kód používá metodu GetDirectories třídy Directory získat seznam složek.
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]);
}
				

Seznam souborů

Tento ukázkový kód používá metodu GetFilesDirectory třídy k získání seznamu souborů.
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]);
}
				
Mnoho věcí může nezdaří, když uživatel získá přístup k souborům. Soubory pravděpodobně neexistuje, soubory mohou být používány nebo uživatelé nemají oprávnění soubory složky, které chcete získat přístup. Zvažte Tyto možnosti při psaní kódu pro zpracování výjimek, které mohou generovat.

Podrobný příklad

  1. Spusťte aplikaci Microsoft Visual Studio .NET, Microsoft Visual Studio 2005 nebo Microsoft Visual C++ 2005 Express Edition.
  2. Na Soubor příkazNovéa potom klepněte na tlačítko Projekt.
  3. Ve skupinovém rámečku Typy projektů, klepněte na tlačítkoProjekty Visual C++. Ve skupinovém rámečku Šablony Klepněte naAplikace model Windows Forms (.NET).

    Poznámka: V aplikaci Visual Studio 2005 klepněte na tlačítkoVisual C++ ve skupinovém rámečku Typy projektů. Ve skupinovém rámečku Šablony, klepněte na tlačítkoModel Windows Forms aplikace.
  4. Zadejte příkaz KB307398 vJméno Napište: C:\ vUmístění pole a potom klepněte na tlačítkoOK.
  5. Otevřete formulář Form1 v návrhu zobrazení a potom stisknutím klávesy F4 otevřete Propertries okna.
  6. V okně Vlastnosti rozbalte Velikostsložka. V dialogovém okně Šířka Napište: 700. V dialogovém okně Výška Napište:320.
  7. Přidejte jeden ListBox ovládací prvek a šestTlačítko ovládací prvky do formuláře Form1.

    Poznámka: Chcete-li zobrazit panel nástrojů, klepněte na tlačítko Panel nástrojů na Zobrazení nabídka.
  8. V okně Vlastnosti změnitUmístění, Jméno, Velikost,Pořadové číslo prvkua Text Tyto vlastnosti řídí následujícím způsobem:
    Zmenšit tuto tabulkuRozšířit tuto tabulku
    ID ovládacího prvkuUmístěníJménoVelikostPořadové číslo prvkuText
    Button1500, 32Button1112, 231Čtení textového souboru
    BUTTON2500, 64BUTTON2112, 232Zápis textového souboru
    button3500, 96button3112, 233Zobrazení informací o souboru
    Button4500, 128Button4112, 234Seznam jednotek
    button5500, 160button5112, 235Seznam podsložek
    button6500, 192button6112, 236Seznam souborů
    Seznam124, 24Seznam1450, 2000Seznam1
  9. Otevřete soubor Form1.h. V deklaraci třídy Form1 Prohlašuji, že jedno soukromé proměnné řetězce s následujícím kódem:
    private:
    		String *windir;
  10. V konstruktoru třídy Form1 přidejte následující kód:
    windir = System::Environment::GetEnvironmentVariable("windir");
  11. K provádění operací výstupu vstupní soubor, přidejte System::IO obor názvů.
  12. Stiskněte klávesy SHIFT + F7 otevřete Form1 v Zobrazení návrhu. Poklepejte na tlačítko Pro čtení textový soubor a vložte následující kód:

    Poznámka: V aplikaci Visual C++ 2005 klepněte na tlačítko Designer v Zobrazení nabídka.
    // 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 zobrazení návrhu Form1 poklepejte na tlačítko Vytvořit textový soubor a vložte následující 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 zobrazení návrhu Form1 poklepejte na tlačítko Zobrazení informací o souboru a vložte následující kód v metodě:
    // 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 zobrazení návrhu Form1 poklepejte na tlačítko Seznam jednotek a vložte následující 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 zobrazení návrhu Form1 poklepejte na tlačítko Seznam podsložek a vložte následující 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 zobrazení návrhu Form1 poklepejte na tlačítko Seznam souborů a vložte následující 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. Chcete-li sestavit a spustit program, stiskněte CTRL + F5.

Úplného příkladu kódu

Poznámka: Je nutné změnit následující kód při spuštění v aplikaci 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

Další informace naleznete na následujícím webu společnosti Microsoft:
http://support.microsoft.com/default.aspx?xmlid=fh;EN-US; vcnet
Další informace o vytvoření formuláře systému Windows ve spravovaných Rozšíření jazyka C++, naleznete v ukázce "ManagedCWinFormWiz" v aplikaci Visual Studio .NET Nápověda.

Vlastnosti

ID článku: 307398 - Poslední aktualizace: 28. června 2013 - Revize: 7.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C++ 2008 Express Edition
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
Klíčová slova: 
kbwindowsforms kbforms kbio kbfileio kbhowtomaster kbnewsgrouplink kbmt KB307398 KbMtcs
Strojově přeložený článek
DŮLEŽITÉ: Tento článek je přeložen pomocí softwaru na strojový překlad Microsoft. Nepřesný či chybný překlad lze opravit prostřednictvím technologie Community Translation Framework (CTF). Microsoft nabízí strojově přeložené, komunitou dodatečně upravované články, a články přeložené lidmi s cílem zajistit přístup ke všem článkům v naší znalostní bázi ve více jazycích. Strojově přeložené a dodatečně upravované články mohou obsahovat chyby ve slovníku, syntaxi a gramatice. Společnost Microsoft není odpovědná za jakékoliv nepřesnosti, chyby nebo škody způsobené nesprávným překladem obsahu nebo jeho použitím našimi zákazníky. Více o CTF naleznete na http://support.microsoft.com/gp/machine-translation-corrections/cs.
Projděte si také anglickou verzi článku: 307398

Dejte nám zpětnou vazbu

 

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