Visual C++ 2005 또는 Visual C++ 2008 기본 파일 I/O를 수행 하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 950617 - 이 문서가 적용되는 제품 보기.
이 문서의 버전에는 Managed Extensions for C++ 참조 하십시오. 307398.
이 문서의 Microsoft Visual C#.NET 버전을 참조 하십시오. 304430.
이 문서의 Microsoft Visual Basic.NET 버전을 참조 하십시오. 304427 .
이 문서에서는 다음 Microsoft.NET Framework 클래스 라이브러리 네임 스페이스를 참조합니다.
  • System::ComponentModel
  • System::Windows::Forms
  • System::Drawing
소개
이 문서에서는 Microsoft Visual C++ 2005 또는 Microsoft Visual C++ 2008 6 개의 기본 파일 I/O 작업을 수행 하는 방법에 설명 합니다. 이 문서는 Ecma C + 사용 + CLI 구문에는 Managed Extensions for C++ 307398 Microsoft 기술 자료 문서에서 설명 하는 구문 대신.

자세한 내용을 보시려면, Microsoft 기술 자료의 다음 문서 번호를 클릭해 주십시오.
307398Visual C++.NET 또는 Visual C++ 2005에서의 기본적인 파일 I/O를 수행 하는 방법
모두 확대 | 모두 축소

이 페이지에서

개체 모델에서 Microsoft.NET Framework 파일 작업에 대 한 Microsoft Visual Studio 6.0의 많은 개발자와 함께 인기 있는 FileSystemObject (FSO)와 유사 합니다. 이 문서에서 설명 하는 기능에는 다음 Microsoft 기술 자료 문서 기반으로:
186118 FileSystemObject를 사용 하는 방법 Visual Basic
FSO는.NET Framework 계속 사용할 수 있습니다. FSO는 COM 구성 요소 이므로.NET Framework Interop 계층을 통해 개체에 액세스할 수 필요 합니다. 구성 요소를 사용 하려면.NET Framework 구성 요소에 대 한 래퍼를 생성 합니다. 그러나 File 클래스, FileInfo 클래스, Directory 클래스, DirectoryInfo 클래스, 및 기타 관련된 클래스를.NET Framework Interop 계층의 오버 헤드 없이 FSO를 사용할 수 없는 기능을 제공 합니다.

요구 사항

다음은 하드웨어, 소프트웨어 개요 네트워크 인프라와 필요한 서비스 팩:
  • Visual C++ 2005 또는 Visual C++ 2008

파일 I/O 작업 예제

이 문서의 예제에서는 기본 파일 I/O 작업에 설명합니다. "단계별 예제" 절 예제 프로그램을 만드는 방법에 설명 다음 여섯 가지 파일 입출력 작업을 보여 줍니다.
  • 텍스트 파일 읽기
  • 텍스트 파일 쓰기
  • 파일 정보 보기
  • 디스크 드라이브 나열
  • 폴더 내용
  • 파일 목록

텍스트 파일 읽기

다음 샘플 코드는 텍스트 파일을 읽는 StreamReader 클래스를 사용 합니다. 파일의 내용은 ListBox 컨트롤에 추가 됩니다. Try... catch 블록은 파일이 비어 있을 경우 프로그램에 경고 하는 데 사용 됩니다. 파일의 끝에 도달 하는 시기를 결정 하는 여러 가지 방법이 있습니다. Peek 메서드는이 샘플을 사용 하 여 다음 줄을 읽기 전에 다음 줄을 검사 합니다.
listBox1->Items->Clear();
try {
    String^ textFile = String::Concat(windir,"\\mytest.txt");
    StreamReader^ reader = gcnew 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);
}

텍스트 파일 쓰기

이 샘플 코드는 StreamWriter 클래스를 사용 하 여 만들고 파일에 쓸 수 있습니다. 기존 파일의 경우에 동일한 방식으로 열 수 있습니다.
StreamWriter^ pwriter = gcnew StreamWriter("C:\\KBTest.txt");
pwriter->WriteLine("File created using StreamWriter class.");
pwriter->Close();
listBox1->Items->Clear();
String ^filew = gcnew String("File Written to C:\\KBTest.txt");
listBox1->Items->Add(filew);

파일 정보 보기

이 샘플 코드는 FileInfo 클래스를 사용 하 여 파일의 속성에 액세스 하려면. 이 샘플에서는 메모장을 사용 합니다. ListBox 컨트롤의 속성을 표시 합니다.
listBox1->Items->Clear();
String^ testfile = String::Concat(windir,"\\notepad.exe");
FileInfo^ pFileProps = gcnew FileInfo(testfile);

listBox1->Items->Add(String::Concat("File Name = ", pFileProps->FullName));
listBox1->Items->Add(String::Concat("Creation Time = ", pFileProps->CreationTime.ToString()));
listBox1->Items->Add(String::Concat("Last Access Time = ", pFileProps->LastAccessTime.ToString()));
listBox1->Items->Add(String::Concat("Last Write Time = ", pFileProps->LastWriteTime.ToString()));
listBox1->Items->Add(String::Concat("Size = ", pFileProps->Length.ToString()));

디스크 드라이브 나열

이 샘플 코드를 디렉터리 클래스 및 드라이브 클래스를 사용 하 여 시스템의 논리 드라이브를 나열 합니다. 이 샘플에 대 한 결과 ListBox 컨트롤에 표시 됩니다.
listBox1->Items->Clear();
cli::array<String^>^ drives = Directory::GetLogicalDrives();
int numDrives = drives->Length;
for(int i=0; i<numDrives; i++)
{
    listBox1->Items->Add(drives[i]);
}

하위 폴더 나열

이 샘플 코드 디렉터리 클래스의 GetDirectories 메서드를 사용 하 여 폴더 목록을 얻을 수 있습니다.
listBox1->Items->Clear();
cli::array<String^>^ dirs = Directory::GetDirectories(windir);
int numDirs = dirs->Length;
for(int i=0; i<numDirs; i++)
{
    listBox1->Items->Add(dirs[i]);
}

파일 목록

이 샘플 코드 디렉터리 클래스의 GetFiles 메서드를 사용 하 여 파일의 목록을 보려면.
listBox1->Items->Clear();
cli::array<String^>^ files = Directory::GetFiles(windir);
int numFiles = files->Length;
for(int i=0; i<numFiles; i++)
{
    listBox1->Items->Add(files[i]);
}
사용자 파일에 액세스할 때 여러 가지 예외가 발생할 수 있습니다. 파일, 파일을 사용할 수 없거나 사용자가 액세스 하려는 폴더의 파일에 권한이 없을 수 있습니다. 생성 되는 예외를 처리 하는 코드를 작성할 때는 이러한 가능성을 고려 하십시오.

단계별 예제

  1. Microsoft Visual Studio 2005 또는 Microsoft Visual C++ 2008을 시작 합니다.
  2. 파일 메뉴의를 클릭 하 고 다음을 클릭 프로젝트.
  3. 아래에서 프로젝트 형식를 클릭Visual C++ 프로젝트. 아래에서 서식 파일를 클릭Windows Forms 응용 프로그램입니다.

    참고 기본 프로그래밍 언어를 Visual C++ 볼 수 없는 경우 Visual C++ 프로젝트 아래에서 다른 언어.
  4. 형식 KB950617이름 상자, 형식 C:\ 위치 상자를 클릭 하 고 확인.
  5. Form1 폼을 디자인 보기에서 열 및 다음 속성 창을 열려면 F4 키를 누릅니다.
  6. 속성 창에서 확장 된 크기 속성 폴더입니다. 에 너비 상자, 형식 700. 에 높이 상자, 형식 320.
  7. ListBox 컨트롤 및 6에 추가 Form1에 단추 컨트롤입니다.

    참고 도구 상자를 보려면 다음을 클릭 합니다. 도구 상자보기 메뉴입니다.
  8. 속성 창에서 변경 된위치 속성은 이름 속성은 크기 속성은TabIndex 속성 및 텍스트 이러한 속성 다음과 같이 제어합니다.
    표 축소표 확대
    컨트롤 ID위치이름크기TabIndex텍스트
    button1500, 32button1112, 231텍스트 파일 읽기
    button2500, 64button2112, 232텍스트 파일 쓰기
    button3500, 96button3112, 233파일 정보 보기
    button4500, 128button4112, 234드라이브 나열
    button5500, 160button5112, 235하위 폴더 나열
    button6500, 192button6112, 236파일 목록
    listBox124, 24listBox1450, 2000
  9. Form1.h 파일을 엽니다. Form1 클래스 선언에서 다음 코드를 사용 하 여 한 개인 문자열 변수를 선언 합니다.
    private: String^ windir; 
  10. Form1 클래스 생성자에 다음 코드를 추가 합니다.
    windir = System::Environment::GetEnvironmentVariable("windir");
  11. 파일 I/O 작업을 수행 하려면 System::IO 를 추가 합니다. 네임 스페이스입니다.
  12. 솔루션 탐색기에서 선택 합니다. Form1.h를 클릭 하 고 다음을 클릭 디자이너보기 디자인 뷰에서 Form1을 엽니다 메뉴입니다. 두 번 클릭 하 여 텍스트 파일 읽기 단추를 누른 다음 붙여넣기 단추를 다음 코드 처리기를 클릭 합니다.
    					// How to read a text file:
    					// Use try...catch to deal with a 0-byte file or a nonexistent file.
    					listBox1->Items->Clear();
    					try {
    						StreamReader^ reader = gcnew StreamReader("c:\\mytest.txt");
    						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 shows you how to create and to write to a text file.
    StreamWriter^ pwriter = gcnew StreamWriter("c:\\KBTest.txt");
    pwriter->WriteLine("The file was created by using the StreamWriter class.");
    pwriter->Close();
    listBox1->Items->Clear();
    String^ filew = gcnew String("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,"\\notepad.exe");
    FileInfo^ pFileProps = gcnew FileInfo(testfile);
    
    listBox1->Items->Add(String::Concat("File Name = ", pFileProps->FullName));
    listBox1->Items->Add(String::Concat("Creation Time = ", pFileProps->CreationTime.ToString()));
    listBox1->Items->Add(String::Concat("Last Access Time = ", pFileProps->LastAccessTime.ToString()));
    listBox1->Items->Add(String::Concat("Last Write Time = ", pFileProps->LastWriteTime.ToString()));
    listBox1->Items->Add(String::Concat("Size = ", pFileProps->Length.ToString()));
    
  15. 디자인 뷰에서 Form1에서 두 번 클릭 하 여 드라이브 나열 단추를 클릭 한 다음 다음 코드를 붙여 넣습니다.
    // This shows you how to obtain a list of disk drivers.
    listBox1->Items->Clear();
    cli::array<String^>^ drives = Directory::GetLogicalDrives();
    int numDrives = drives->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();
    cli::array<String^>^ dirs = Directory::GetDirectories(windir);
    int numDirs = dirs->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();
    cli::array<String^>^ files = Directory::GetFiles(windir);
    int numFiles = files->Length;
    for(int i=0; i<numFiles; i++)
    {
        listBox1->Items->Add(files[i]);
    }
    
  18. 빌드 및 다음 프로그램을 실행 하려면 CTRL + F5 키를 눌러.

전체 코드 샘플입니다.

// Form1.h
#pragma once

namespace KB950617

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace System::IO;

    public ref class Form1 : public System::Windows::Forms::Form
    {
    private:
        String^ windir;

    public:
        Form1(void)
        {
            InitializeComponent();
            windir = System::Environment::GetEnvironmentVariable("windir");
        }

    protected:
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::ListBox^  listBox1;
    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::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
        void InitializeComponent(void)
        {
            this->listBox1 = (gcnew System::Windows::Forms::ListBox());
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->button2 = (gcnew System::Windows::Forms::Button());
            this->button3 = (gcnew System::Windows::Forms::Button());
            this->button4 = (gcnew System::Windows::Forms::Button());
            this->button5 = (gcnew System::Windows::Forms::Button());
            this->button6 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            // listBox1
            this->listBox1->FormattingEnabled = true;
            this->listBox1->Location = System::Drawing::Point(24, 24);
            this->listBox1->Name = L"listBox1";
            this->listBox1->Size = System::Drawing::Size(450, 199);
            this->listBox1->TabIndex = 0;
            // button1
            this->button1->Location = System::Drawing::Point(500, 32);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(112, 23);
            this->button1->TabIndex = 1;
            this->button1->Text = L"Read Text File";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            // button2
            this->button2->Location = System::Drawing::Point(500, 64);
            this->button2->Name = L"button2";
            this->button2->Size = System::Drawing::Size(112, 23);
            this->button2->TabIndex = 2;
            this->button2->Text = L"Write Text File";
            this->button2->UseVisualStyleBackColor = true;
            this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
            // button3
            this->button3->Location = System::Drawing::Point(500, 96);
            this->button3->Name = L"button3";
            this->button3->Size = System::Drawing::Size(112, 23);
            this->button3->TabIndex = 3;
            this->button3->Text = L"View File Information";
            this->button3->UseVisualStyleBackColor = true;
            this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
            // button4
            this->button4->Location = System::Drawing::Point(500, 128);
            this->button4->Name = L"button4";
            this->button4->Size = System::Drawing::Size(112, 23);
            this->button4->TabIndex = 4;
            this->button4->Text = L"List Drives";
            this->button4->UseVisualStyleBackColor = true;
            this->button4->Click += gcnew System::EventHandler(this, &Form1::button4_Click);
            // button5
            this->button5->Location = System::Drawing::Point(500, 160);
            this->button5->Name = L"button5";
            this->button5->Size = System::Drawing::Size(112, 23);
            this->button5->TabIndex = 5;
            this->button5->Text = L"List Subfolders";
            this->button5->UseVisualStyleBackColor = true;
            this->button5->Click += gcnew System::EventHandler(this, &Form1::button5_Click);
            // button6
            this->button6->Location = System::Drawing::Point(500, 192);
            this->button6->Name = L"button6";
            this->button6->Size = System::Drawing::Size(112, 23);
            this->button6->TabIndex = 6;
            this->button6->Text = L"List Files";
            this->button6->UseVisualStyleBackColor = true;
            this->button6->Click += gcnew System::EventHandler(this, &Form1::button6_Click);
            // Form1
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(692, 286);
            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->Controls->Add(this->listBox1);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->ResumeLayout(false);
        }
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 					// How to read a text file:
					// Use try...catch to deal with a 0-byte file or a non-existent file.
					listBox1->Items->Clear();
					try {
						StreamReader^ reader = gcnew StreamReader("c:\\mytest.txt");
						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 demonstrates how to create and to write to a text file.
                 StreamWriter^ pwriter = gcnew StreamWriter("c:\\KBTest.txt");
                 pwriter->WriteLine("The file was created by using the StreamWriter class.");
                 pwriter->Close();
                 listBox1->Items->Clear();
                 String^ filew = gcnew String("File 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. The example uses Notepad.exe.
                 listBox1->Items->Clear();
                 String^ testfile = String::Concat(windir,"\\notepad.exe");
                 FileInfo^ pFileProps = gcnew FileInfo(testfile);

                 listBox1->Items->Add(String::Concat("File Name = ", pFileProps->FullName));
                 listBox1->Items->Add(String::Concat("Creation Time = ", pFileProps->CreationTime.ToString()));
                 listBox1->Items->Add(String::Concat("Last Access Time = ", pFileProps->LastAccessTime.ToString()));
                 listBox1->Items->Add(String::Concat("Last Write Time = ", pFileProps->LastWriteTime.ToString()));
                 listBox1->Items->Add(String::Concat("Size = ", pFileProps->Length.ToString()));
             }
    private: System::Void button4_Click(System::Object^  sender, System::EventArgs^  e) {
                 // This demonstrates how to obtain a list of disk drivers.
                 listBox1->Items->Clear();
                 cli::array<String^>^ drives = Directory::GetLogicalDrives();
                 int numDrives = drives->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();
                 cli::array<String^>^ dirs = Directory::GetDirectories(windir);
                 int numDirs = dirs->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();
                 cli::array<String^>^ files = Directory::GetFiles(windir);
                 int numFiles = files->Length;
                 for(int i=0; i<numFiles; i++)
                 {
                     listBox1->Items->Add(files[i]);
                 }
             }
    };
}


// KB950617.cpp

#include "stdafx.h"
#include "Form1.h"

using namespace KB950617;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    // Enable Windows XP visual effects before any controls are created.
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 

    // Create the main window and run the program.
    Application::Run(gcnew Form1());
    return 0;
}

참조

자세한 내용은 다음 Microsoft 웹 사이트를 방문 하십시오.
http://support.microsoft.com/default.aspx?xmlid=fh.EN-US; vcnet
Managed Extensions for C++ Windows form을 만드는 방법에 대 한 자세한 내용은 Visual Studio.NET 도움말의 "ManagedCWinFormWiz" 샘플을 참조 하십시오.

ECMA C +에 대 한 자세한 내용은 + CLI에서 다음 Microsoft Developer Network (MSDN) 웹 사이트를 방문 하십시오.
http://msdn2.microsoft.com/en-us/library/ms379617.aspx

속성

기술 자료: 950617 - 마지막 검토: 2013년 6월 28일 금요일 - 수정: 2.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C++ 2008 Express Edition
  • Microsoft Visual C++ 2005 Express Edition
키워드:?
kbwindowsforms kbio kbforms kbnewsgrouplink kbfileio kbinfo kbmt KB950617 KbMtko
기계 번역된 문서
이 문서는 Microsoft 기계 번역 소프트웨어를 이용하여 번역되었으며 Microsoft Community에 의한 Community Translation Framework(CTF) 기술 혹은 사람이 번역한 내용에 의하여 사후 편집될 수 있습니다. Microsoft는 Knowledge Base에 있는 모든 문서에 다양한 언어로 접근할 수 있도록 하기 위하여 기계 번역, 사람에 의한 번역 및 커뮤니티가 편집한 내용을 모두 제공합니다. 번역된 문서는 어휘, 구문 및/혹은 문법에 오류가 있을 수 있습니다. Microsoft는 번역 오류로 인한 부정확성, 오류 및/또는 손해와 이를 고객이 사용하는 데에 대하여 책임을 지지 않습니다.
이 문서의 영문 버전 보기:950617

피드백 보내기

 

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