Untuk merancang fungsi "hard disk jaringan", Anda harus terlebih dahulu memahami pengoperasian pemrosesan file dan folder di .NET. Kelas file dan kelas Direktori adalah dua kelas yang paling penting. Memahaminya akan sangat memudahkan pelaksanaan fungsi-fungsi selanjutnya.
Kelas System.IO.File dan kelas System.IO.FileInfo
akan banyak menggunakan konten yang berkaitan dengan operasi sistem file dalam proses perancangan dan implementasi "hard disk jaringan". Oleh karena itu, bagian ini pertama-tama memperkenalkan secara singkat dua kelas .NET yang terkait dengan sistem file.
Kelas System.IO.File dan kelas System.IO.FileInfo terutama menyediakan berbagai operasi yang terkait dengan file, dan Anda perlu mereferensikan namespace System.IO saat menggunakannya. Atribut dan metode utamanya diperkenalkan di bawah ini melalui contoh program.
(1) Metode pembukaan file: File.Open
Deklarasi metode ini adalah sebagai berikut:
Public static FileStream Open (string path, FileMode mode)
Kode berikut membuka file bernama newFile.txt yang disimpan di direktori c:tempuploads, dan di file Tulis halo di .
kekosongan pribadi OpenFile()
{
FileStream.TextFile=File.Buka(@"c:tempuploadsnewFile.txt",FileMode.Append);
byte [] Info = {(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'};
TextFile.Write(Info,0,Info.Panjang);
TextFile.Tutup();
}
(2) Metode pembuatan file: File.Create
Deklarasi metode ini adalah sebagai berikut:
Public static FileStream Create(string path;)
Kode berikut menunjukkan cara membuat file bernama newFile.txt di bawah c:tempuploads.
Karena metode File.Create memberikan akses baca/tulis penuh ke file baru secara default untuk semua pengguna, file dibuka dengan akses baca/tulis dan harus ditutup sebelum dapat dibuka oleh aplikasi lain. Untuk melakukan ini, Anda perlu menggunakan metode Tutup dari kelas FileStream untuk menutup file yang dibuat.
kekosongan pribadi MakeFile()
{
FileStream NewText=File.Buat(@"c:tempuploadsnewFile.txt");
Teks Baru.Tutup();
}
(3) Metode penghapusan file: File.Delete
Metode ini dideklarasikan sebagai berikut:
public static void Delete(string path);
Kode berikut menunjukkan cara menghapus file newFile.txt di direktori c:tempuploads.
kekosongan pribadi DeleteFile()
{
File.Hapus(@"c:tempuploadsnewFile.txt");
}
(4) Metode penyalinan file: File.Copy
Metode ini dideklarasikan sebagai berikut:
public static void Copy(string sourceFileName,string destFileName,bool overwrite);
Kode berikut menyalin c:tempuploadsnewFile.txt ke c:tempuploads Cadangan.txt.
Karena parameter OverWrite metode Cope disetel ke true, jika file BackUp.txt sudah ada, maka file tersebut akan ditimpa oleh file yang disalin.
kekosongan pribadi CopyFile()
{
File.Salinan(@"c:tempuploadsnewFile.txt",@"c:tempuploadsBackUp.txt",true);
}
(5) Metode pemindahan file: File.Move
Metode ini dideklarasikan sebagai berikut:
public static void Move(string sourceFileName,string destFileName);
Kode berikut dapat memindahkan file BackUp.txt di bawah c:tempuploads ke direktori root berkendara c.
Catatan:
Transfer file hanya dapat dilakukan pada disk logis yang sama. Jika Anda mencoba mentransfer file dari drive c ke drive d, akan terjadi kesalahan.
kekosongan pribadi MoveFile()
{
File.Move(@"c:tempuploadsBackUp.txt",@"c:BackUp.txt");
}
(6) Metode set atribut file: File.SetAttributes
Metode ini dideklarasikan sebagai berikut:
public static void SetAttributes(string path,FileAttributes fileAttributes);
Kode berikut dapat mengatur atribut file c:tempuploadsnewFile.txt ke hanya baca atau tersembunyi.
kekosongan pribadi SetFile()
{
File.SetAttributes(@"c:tempuploadsnewFile.txt",
FileAttributes.ReadOnly|FileAttributes.Hidden);
}
Selain atribut read-only dan tersembunyi yang umum digunakan, file juga memiliki Arsip (status arsip file), Sistem (file sistem), Sementara (file sementara), dll. Untuk detail tentang atribut file, silakan lihat deskripsi FileAttributes di MSDN.
(7) Metode untuk menentukan apakah suatu file ada: File.Exist
Metode ini dinyatakan sebagai berikut:
public static bool Exists(string path);
Kode berikut menentukan apakah file c:tempuploadsnewFile.txt ada. Jika ada, salin file terlebih dahulu, lalu hapus, dan terakhir pindahkan file yang disalin, jika tidak ada, buat file terlebih dahulu, lalu buka file dan lakukan operasi penulisan, dan terakhir atur atribut file menjadi hanya-baca; dan tersembunyi.
if(File.Exists(@"c:tempuploadsnewFile.txt")) //Tentukan apakah file tersebut ada
{
CopyFile(); //Salin fileDeleteFile(); //Hapus fileMoveFile();
}
kalau tidak
{
MakeFile(); //Buat file OpenFile(); //Buka file SetFile();
}
Selain itu, kelas File memberikan lebih banyak dukungan untuk teks Teks.
· AppendText: Menambahkan teks ke file yang sudah ada
· CreateText: Membuat atau membuka file baru untuk menulis teks
· OpenText: Membuka file teks yang ada untuk dibaca
Namun metode di atas terutama beroperasi pada teks yang dikodekan UTF-8, sehingga muncul Tidak cukup fleksibel. Disarankan agar pembaca menggunakan kode berikut untuk mengoperasikan file txt.
· Lakukan operasi "baca" pada file txt. Contoh kodenya adalah sebagai berikut:
StreamReader TxtReader = new StreamReader(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
string Konten File;
FileContent = TxtReader.ReadEnd();
TxtReader.Close();
· Lakukan operasi "tulis" pada file txt. Contoh kodenya adalah sebagai berikut:
StreamWriter = new StreamWrite(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
string Konten File;
TxtWriter.Write(Konten File);
TxtWriter.Close();
Kelas System.IO.Directory dan kelas System.DirectoryInfo
terutama menyediakan berbagai operasi pada direktori, dan Anda perlu mereferensikan namespace System.IO saat menggunakannya. Atribut dan metode utamanya diperkenalkan di bawah ini melalui contoh program.
(1) Metode pembuatan direktori: Directory.CreateDirectory
Metode ini dideklarasikan sebagai berikut:
public static DirectoryInfo CreateDirectory (string path);
Kode berikut menunjukkan pembuatan direktori bernama NewDirectory di folder c:tempuploads.
kekosongan pribadi MakeDirectory()
{
Direktori.CreateDirectory(@"c:tempuploadsNewDirectoty");
}
(2) Metode pengaturan atribut direktori:
Kode di bawah DirectoryInfo.Atttributes menyetel direktori c:tempuploadsNewDirectory menjadi hanya-baca dan tersembunyi. Seperti atribut file, atribut direktori juga diatur menggunakan FileAttributes.
kekosongan pribadi SetDirectory()
{
DirectoryInfo NewDirInfo = new DirectoryInfo(@"c:tempuploadsNewDirectoty");
NewDirInfo.Atttributes = FileAttributes.ReadOnly|FileAttributes.Hidden;
}
(3) Metode penghapusan direktori: Directory.Delete
Metode ini dideklarasikan sebagai berikut:
public static void Delete(string path,bool recursive);
Kode berikut dapat menghapus direktori c:tempuploadsBackUp. Parameter kedua dari metode Delete bertipe bool, yang dapat menentukan apakah akan menghapus direktori yang tidak kosong. Jika nilai parameternya benar, seluruh direktori akan dihapus, meskipun ada file atau subdirektori di direktori tersebut, jika salah, direktori tersebut hanya akan dihapus jika kosong;
kekosongan pribadi DeleteDirectory()
{
Direktori.Hapus(@"c:tempuploadsBackUp",true);
}
(4) Metode pemindahan direktori: Directory.Move
Metode ini dideklarasikan sebagai berikut:
public static void Move(string sourceDirName, string destDirName);
Kode berikut memindahkan direktori c:tempuploadsNewDirectory ke c:tempuploadsBackUp.
kekosongan pribadi MoveDirectory()
{
File.Move(@"c:tempuploadsNewDirectory",@"c:tempuploadsBackUp");
}
(5) Dapatkan semua subdirektori di direktori saat ini: Directory.GetDirectories
Metode ini dideklarasikan sebagai berikut:
public static string[] GetDirectories(string path;);
Kode berikut membacakan semua subdirektori di direktori c:tempuploads , dan menyimpannya ke dalam array string.
kekosongan pribadi GetDirectory()
{
string [] Direktori;
Direktori = Direktori.GetDirectories (@"c:tempuploads");
}
(6) Metode untuk mendapatkan semua file di direktori saat ini: Directory.GetFiles
Metode ini dideklarasikan sebagai berikut:
public static string[] GetFiles(string path;);
Kode berikut membacakan semua file di c:tempuploads direktori, dan Simpan ke dalam array string.
kekosongan pribadi GetFile()
{
tali [] File;
File = Direktori.GetFiles (@"c:tempuploads",);
}
(7) Metode untuk menentukan apakah suatu direktori ada: Directory.Exist
Metode ini dideklarasikan sebagai berikut:
public static bool Exists(
jalur string;
);
Kode berikut menentukan apakah direktori c:tempuploadsNewDirectory ada. Jika ada, pertama-tama dapatkan subdirektori dan file di direktori tersebut, lalu pindahkan, dan terakhir hapus direktori yang dipindahkan. Jika tidak ada, buat direktori terlebih dahulu, lalu atur atribut direktori menjadi read-only dan tersembunyi.
if(File.Exists(@"c:tempuploadsNewDirectory")) //Tentukan apakah direktori tersebut ada
{
GetDirectory(); //Dapatkan subdirektori GetFile(); //Dapatkan file MoveDirectory(); //Pindahkan direktori DeleteDirectory();
}
kalau tidak
{
MakeDirectory(); //Buat direktori SetDirectory(); //Atur atribut direktori
}
Catatan:
Ada tiga cara untuk menentukan jalur, jalur relatif pada direktori saat ini, jalur relatif pada disk yang berfungsi saat ini, dan jalur absolut. Ambil C:TmpBook sebagai contoh (dengan asumsi direktori kerja saat ini adalah C:Tmp). "Book", "TmpBook", "C:TmpBook" semuanya berarti C:TmpBook.
Selain itu, "" adalah karakter khusus dalam C#, dan Anda perlu menggunakan "\" untuk mengekspresikannya. Karena cara penulisan ini merepotkan, bahasa C# menyediakan @ untuk menyederhanakannya. Cukup tambahkan @ di depan string untuk menggunakan "" secara langsung. Jadi jalur di atas harus dinyatakan sebagai "Book", @"TmpBook", @"C:TmpBook" di C#.