Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

Cara melakukan I/O berkas dasar di Visual C++ atau Visual C++ .NET

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 307398
Untuk Microsoft Visual C++ .NET 2005 2008 ECMA c / CLI versi dari artikel ini, lihat 950617.
Untuk versi Microsoft Visual C# .NET dari artikel ini, lihat 304430.
Untuk versi Microsoft Visual Basic .NET dari artikel ini, lihat 304427.
Artikel ini merujuk ke ruang nama perpustakaan kelas Microsoft .NET Framework berikut ini:
  • System::ComponentModel
  • System::Windows::Forms
  • System::drawing
Ringkasan
Artikel ini selangkah demi selangkah menjelaskan cara melakukan enam basic input/output (operasi I/O berkas) di Microsoft Visual C++ 2005 atau Microsoft Visual C++ .NET. Jika Anda baru untuk .NET Framework, Anda akan menemukan bahwa model objek untuk operasi file di .NET Framework sama dengan FileSystemObject (FSO) yang populer dengan banyak pengembang Microsoft Visual Studio 6.0. Untuk memudahkan transisi, fungsionalitas yang ditunjukkan dalam artikel ini berdasarkan artikel Pangkalan Pengetahuan Microsoft berikut ini:
186118 Cara menggunakan FileSystemObject dengan Visual Basic
Anda masih dapat menggunakan FileSystemObject di .NET Framework. Karena FileSystemObject adalah komponen Model objek komponen (COM), .NET Framework memerlukan akses ke objek dapat melalui lapisan Interop. .NET Framework menghasilkan pembungkus untuk komponen untuk Anda apabila Anda ingin menggunakannya. Namun, berkas kelas, kelas FileInfo , direktori, DirectoryInfo kelas, dan kelas terkait lainnya di .NET Framework, menawarkan fungsi yang tidak tersedia dengan FSO, tanpa beban lapisan Interop.

Persyaratan

Daftar berikut ini mencantumkan peranti penangkap keras yang disarankan, peranti penangkap lunak, jaringan infrastruktur, dan Service Pack yang diperlukan:
  • Visual C++ 2005 atau Visual C++ .NET

Pengoperasian I/O berkas menunjukkan

Contoh dalam artikel ini menjelaskan pengoperasian I/O berkas dasar. Bagian "Selangkah demi selangkah contoh" menjelaskan cara membuat contoh program yang menunjukkan operasi enam I/O berkas berikut ini:
  • Membaca berkas teks
  • Menulis berkas teks
  • Lihat informasi berkas
  • Daftar kandar cakram
  • folder daftar
  • Daftar File

Membaca berkas teks

Kode contoh berikut menggunakan kelas StreamReader untuk membaca berkas teks. Konten berkas ditambahkan ke ListBox control. Coba... catch blok digunakan untuk memberitahu program jika file yang kosong. Ada banyak cara untuk menentukan saat mencapai akhir berkas; sampel ini menggunakan metode cuplikan untuk memeriksa baris berikutnya sebelum membaca.
  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);	}}				
Catatan Visual C++ 2005, Anda harus menambahkan umum bahasa runtime compiler opsi dukungan (/clr:oldSyntax) berhasil menyusun sampel kode sebelumnya sebagai C++ berhasil. Untuk menambahkan umum bahasa runtime compiler opsi dukungan, ikuti langkah-langkah berikut:
  1. Klik proyek, dan kemudian klikProjectName Properti.

    CatatanProjectName adalah placeholder untuk nama proyek.
  2. Luaskan Konfigurasi Properti, kemudian klik Umum.
  3. Di panel kanan-atas, klik untuk memilih umum bahasa Runtime dukungan, lama sintaks (/ clr:oldSyntax) dalam Waktu eksekusi bahasa umum dukungan project pengaturan.
  4. Klik Terapkan, lalu klik OK.
Untuk informasi selengkapnya tentang opsi compiler umum bahasa runtime dukungan, kunjungi situs web Microsoft Developer Network (MSDN) berikut:

Menulis berkas teks

Kode sampel ini menggunakan kelas StreamWriter untuk membuat dan menulis ke berkas. Jika Anda memiliki berkas yang ada, Anda dapat membuka dengan cara yang sama.
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);				

Lihat informasi berkas

Kode sampel ini menggunakan kelas FileInfo untuk mengakses properti berkas. Notepad.exe digunakan dalam contoh ini. Properti ditampilkan di ListBox DNS.
 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()) );				

Daftar kandar cakram

Kode sampel ini menggunakan direktori dan pengandar kelas untuk daftar Logis pada sistem. Untuk contoh ini, hasil yang ditampilkan di ListBox DNS.
  listBox1->Items->Clear();  String* drives[] = Directory::GetLogicalDrives();  int numDrives = drives->get_Length();  for (int i=0; i<numDrives; i++)  {	listBox1->Items->Add(drives[i]);  } 				

Daftar subfolder

Kode sampel ini menggunakan metode GetDirectories kelas direktori untuk mendapatkan folder daftar.
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]);}				

Daftar File

Kode sampel ini menggunakan metode GetFiles kelas direktori untuk mendapatkan daftar file.
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]);}				
Banyak hal yang bisa salah ketika user memperoleh akses ke berkas. Berkas mungkin tidak ada, berkas dapat digunakan, atau pengguna mungkin tidak memiliki hak pada berkas map yang mereka mencoba untuk mengakses. Pertimbangkan kemungkinan ini ketika Anda menulis kode untuk menangani pengecualian yang dapat dibuat.

Contoh langkah demi langkah

  1. Mulai Microsoft Visual Studio .NET, Microsoft Visual Studio 2005, atau Microsoft Visual C++ 2005 Express Edition.
  2. Pada File menu, arahkan kebaru, dan kemudian klik Project.
  3. Pada Jenis proyek, klikVisual C++ proyek. Pada bagian pola dasar , klikWindows formulir aplikasi (.NET).

    Catatan Dalam Visual Studio 2005 klikVisual C++ pada Jenis proyek. Pada pola dasar, klikAplikasi Windows Forms.
  4. Ketik KB307398 di kotaknama , ketik C:\ dalam kotakLokasi , dan kemudian klikOK.
  5. Membuka borang Form1 di Designview, dan kemudian tekan F4 untuk membuka jendela thePropertries.
  6. Di jendela properti, memperluas ukuranfolder. Di kotak lebar , ketik 700. Di kotak Height , ketik320.
  7. Tambahkan satu ListBox kontrol dan enamtombol tekan kontrol untuk Form1.

    Catatan Untuk melihat toolbox, klik Toolbox menu tampilan .
  8. Di jendela properti, UbahLokasi, nama, ukuran,TabIndexdan properti teks thesecontrols sebagai berikut:
    ID kontrolLokasiNamaUkuranTabIndexTeks
    button1500, 32button1112,231Baca File teks
    button2500, 64button2112,232Menulis berkas teks
    button3500, 96button3112,233Lihat informasi berkas
    button4500, 128button4112,234Daftar drive
    button5500, 160button5112,235Daftar subfolder
    button6500, 192button6112,236Daftar File
    listBox124, 24listBox1450,2000listBox1
  9. Buka berkas Form1.h. Dalam deklarasi kelas Form1 , menyatakan variabel String pribadi satu dengan kode berikut:
    private:		String *windir;
  10. Dalam konstruktor kelas Form1 Tambahkan kode berikut ini:
    windir = System::Environment::GetEnvironmentVariable("windir");
  11. Untuk melakukan operasi file Input output, tambahkan System::IOnamespace.
  12. Tekan SHIFT + F7 untuk membuka tampilan inDesign Form1. klik ganda File teks baca tombol tekan, dan kemudian tempel kode berikut ini:

    Catatan Visual C++ 2005 klik desain di menu tampilan .
    // 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. Dalam tampilan desain Form1, klik ganda tombol tekan Menulis berkas teks , dan kemudian tempel kode berikut ini:
    // 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. Dalam tampilan desain Form1, klik ganda tombol tekan Tampilan informasi File , dan kemudian tempel kode berikut dalam metode:
    // 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. Dalam tampilan desain Form1, klik ganda tombol tekan Daftar kandar , dan kemudian tempel kode berikut ini:
    // 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. Dalam tampilan desain Form1, klik ganda tombol tekan Daftar subfolder , dan kemudian tempel kode berikut ini:
    // 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. Dalam tampilan desain Form1, klik ganda tombol tekan Daftar file , dan kemudian tempel kode berikut ini:
    // 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. Untuk membangun dan kemudian jalankan program, tekan CTRL + F5.

Contoh kode lengkap

Catatan Anda harus mengubah kode berikut saat menjalankan 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;}
Referensi
Untuk informasi selengkapnya, kunjungi situs web Microsoft berikut ini: Untuk informasi selengkapnya tentang cara membuat Windows forms dalam ekstensi dikelola untuk C++, lihat contoh "ManagedCWinFormWiz" di Visual Studio .NET bantuan.

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 307398 - Tinjauan Terakhir: 07/03/2016 12:35:00 - Revisi: 4.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 KbMtid
Tanggapan
t=">