Como fazer o arquivo básico no Visual C++ ou no Visual C++ .NET e/s

Traduções deste artigo Traduções deste artigo
ID do artigo: 307398 - Exibir os produtos aos quais esse artigo se aplica.
Para um Microsoft Visual C++ .NET 2005/2008 ECMA c++ /CLI CLI versão deste artigo, consulte 950617.
Para obter uma versão do Microsoft Visual C# .NET deste artigo, consulte 304430.
Para um Microsoft Visual Basic .NET versão deste artigo, consulte 304427.
Este artigo refere-se a os seguintes namespaces do Microsoft.NET Framework Class Library:
  • System::ComponentModel
  • System::Windows::Forms
  • System::Drawing
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo descreve detalhadamente como fazer seis basic entrada/saída (e/s) operações de arquivo no Microsoft Visual C++ 2005 ou no Microsoft Visual C++ .NET. Se você é novo no.NET Framework, Você descobrirá que o modelo de objeto para operações de arquivo com o.NET Framework é semelhante ao o FileSystemObject (FSO) que é popular com muitos desenvolvedores do Microsoft Visual Studio 6.0. Para fazer a transição mais fácil, a funcionalidade que é demonstrada neste artigo baseia-se no seguinte artigo da Base de dados de Conhecimento da Microsoft:
186118 Como utilizar FileSystemObject com Visual Basic
Você ainda pode usar o FileSystemObject no.NET Framework. Como o FileSystemObject é um componente de modelo de objeto componente (COM), o.NET Framework requer que o acesso ao objeto ser por meio da camada de interoperabilidade. O.NET Framework gera um wrapper para o componente se você quiser usá-lo. No entanto, a classe de arquivo , a classe FileInfo , o diretório, DirectoryInfo classes e outras classes relacionadas no.NET Framework, oferece funcionalidade não está disponível com o FSO, sem a sobrecarga da Camada de interoperabilidade.

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs são necessários:
  • Visual C++ 2005 ou Visual C++ .NET

Demonstrado operações

Os exemplos neste artigo descrevem operações de e/s de arquivos básico. A seção "Exemplo passo a passo" descreve como criar um programa de exemplo que demonstra as seguintes operações de i/o de seis arquivos:
  • Ler um arquivo de texto
  • Gravar um arquivo de texto
  • Exibir informações de arquivo
  • Unidades de disco da lista
  • Lista de pastas
  • Lista de arquivos

Ler um arquivo de texto

O exemplo de código a seguir usa uma classe StreamReader para ler um arquivo de texto. O conteúdo do arquivo é adicionado a um controle ListBox . O bloco try... catch é usado para alertar o programa se o arquivo está vazio. Lá de várias maneiras para determinar quando é atingido o final do arquivo; Este exemplo usa o método Peek para examinar a próxima linha antes da leitura.
  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);
	}

}
				
Observação No Visual C++ 2005, você deve adicionar a comuns language runtime suporte a opção de compilador (/CLR: oldSyntax) para compilar com êxito o anterior exemplo de código c++ gerenciado. Para adicionar a opção de compilador do suporte de tempo de execução idioma comum, siga estas etapas:
  1. Clique em Projetoe, em seguida, clique emProjectName Propriedades.

    ObservaçãoProjectName é um espaço reservado para o nome do projeto.
  2. Expandir Propriedades de configuraçãoe, em seguida, clique emGeral.
  3. No painel direito, clique para selecionar Suporte a Common Language Runtime, sintaxe antiga (/: oldSyntax) noSuporte a Common Language Runtime configurações do projeto.
  4. Clique emAplicare, em seguida, clique em OK.
Para obter mais informações sobre opções de compilador suporte do common language runtime, visite o seguinte site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx

Gravar um arquivo de texto

Este código de exemplo usa uma classe StreamWriter para criar e gravar em um arquivo. Se você tiver um existente arquivo, você pode abri-lo da mesma maneira.
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);
				

Exibir informações de arquivo

Este código de exemplo usa uma classe FileInfo para acessar propriedades de um arquivo. Notepad.exe é usada nesta exemplo de. As propriedades são exibidas em um controle 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()) );
				

Unidades de disco da lista

Este código de exemplo usa as classes de diretório e unidade para listar as unidades lógicas em um sistema. Neste exemplo, os resultados são exibidos em um controle 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]);
  } 
				

Lista de subpastas

Este código de exemplo usa o método GetDirectories da classe Directory para obter uma lista de pastas.
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]);
}
				

Lista de arquivos

Este código de exemplo usa o método GetFiles da classe Directory para obter uma listagem de arquivos.
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]);
}
				
Muitas coisas podem dar erradas quando um usuário obtém acesso aos arquivos. Os arquivos pode não existir, os arquivos podem estar em uso ou os usuários talvez não tenha os direitos o arquivos de pastas que estão tentando acessar. Considere a possibilidade de Essas possibilidades quando você escreve código para manipular as exceções que podem ser gerado.

Exemplo passo a passo

  1. Inicie o Microsoft Visual Studio .NET, Microsoft Visual Studio 2005 ou Microsoft Visual C++ 2005 Express Edition.
  2. Sobre o Arquivo aponte paraNovoe, em seguida, clique em Projeto.
  3. Em Tipos de projeto, clique emProjetos do Visual C++. Em Modelos seção, clique emWindows Forms Application (.NET).

    Observação No Visual Studio 2005, clique emVisual C++ em Tipos de projeto. Em Modelos, clique emAplicativo de formulários do Windows.
  4. Tipo KB307398 noNome caixa, digite C:\ noLocal caixa e, em seguida, cliqueOK.
  5. Abra o formulário de Form1 no Design Exibir e, em seguida, pressione F4 para abrir a Janela de Propertries.
  6. Na janela Propriedades, expanda o Tamanhopasta. No Largura caixa, digite 700. No Altura caixa, digite320.
  7. Adicione um Caixa de listagem controle e seisBotão controles para Form1.

    Observação Para exibir a caixa de ferramentas, clique em Caixa de ferramentas sobre o Modo de exibição menu.
  8. Na janela Propriedades, altere oLocal, o Nome, o Tamanho, oTabIndexe o Texto propriedades desses controles da seguinte maneira:
    Recolher esta tabelaExpandir esta tabela
    Identificação de controleLocalNomeTamanhoTabIndexTexto
    Button1500, 32Button1112, 231Ler arquivo de texto
    Button2500, 64Button2112, 232Gravar arquivo de texto
    Button3500, 96Button3112, 233Exibir informações de arquivo
    Button4500, 128Button4112, 234Lista de unidades
    button5500, 160button5112, 235Lista de subpastas
    button6500, 192button6112, 236Lista de arquivos
    listBox124, 24listBox1450, 2000listBox1
  9. Abra o arquivo Form1. Na declaração da classe Form1 , Declare uma variável de seqüência de caracteres particular com o seguinte código:
    private:
    		String *windir;
  10. No construtor da classe Form1 , adicione o seguinte código:
    windir = System::Environment::GetEnvironmentVariable("windir");
  11. Para executar operações de saída de entrada do arquivo, adicione o System::IO espaço para nome.
  12. Pressione SHIFT + F7 para abrir Form1 no Modo de design. Clique duas vezes no botão Ler arquivo de texto e, em seguida, cole o seguinte código:

    Observação No Visual C++ 2005, clique em Designer no Modo de exibição menu.
    // 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. No modo Design de Form1, clique duas vezes no botão Gravar arquivo de texto e, em seguida, cole o seguinte código:
    // 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. No modo Design de Form1, clique duas vezes no botão Modo de exibição de informações sobre o arquivo e, em seguida, cole o seguinte código no método:
    // 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. No modo Design de Form1, clique duas vezes no botão Lista de unidades e, em seguida, cole o seguinte código:
    // 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. No modo Design de Form1, clique duas vezes no botão Lista de subpastas e, em seguida, cole o seguinte código:
    // 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. No modo Design de Form1, clique duas vezes no botão Lista de arquivos e, em seguida, cole o seguinte código:
    // 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. Para criar e executar o programa, pressione CTRL + F5.

Exemplo de código completo

Observação Quando em execução no Visual C++ 2005, você deve alterar o código a seguir.
//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;
}

Referências

Para obter mais informações, visite o seguinte site da Microsoft:
http://support.microsoft.com/default.aspx?xmlid=fh;EN-US; vcnet
Para obter mais informações sobre como criar formulários do Windows no gerenciado Extensions para C++, consulte o exemplo de "ManagedCWinFormWiz" no Visual Studio .NET de Obter ajuda.

Propriedades

ID do artigo: 307398 - Última revisão: sexta-feira, 28 de junho de 2013 - Revisão: 5.0
A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ 2008 Express Edition
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
Palavras-chave: 
kbwindowsforms kbforms kbio kbfileio kbhowtomaster kbnewsgrouplink kbmt KB307398 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.
Clique aqui para ver a versão em Inglês deste artigo: 307398

Submeter comentários

 

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