Чтобы спроектировать функцию «сетевого жесткого диска», необходимо сначала ознакомиться с операциями обработки файлов и папок в .NET. Класс файла и класс каталога являются двумя наиболее важными классами. Их понимание существенно облегчит реализацию последующих функций.
Класс System.IO.File и класс System.IO.FileInfo
будут широко использовать контент, связанный с операциями файловой системы, в процессе проектирования и реализации «сетевого жесткого диска». Поэтому в этом разделе сначала кратко описываются два класса .NET, связанные с файловой системой.
Класс System.IO.File и класс System.IO.FileInfo в основном предоставляют различные операции, связанные с файлами, и при их использовании необходимо ссылаться на пространство имен System.IO. Его основные атрибуты и методы представлены ниже на примерах программ.
(1) Метод открытия файла: File.Open
Объявление этого метода выглядит следующим образом:
public static FileStream Open(строковый путь, режим FileMode).
Следующий код открывает файл с именем newFile.txt, хранящийся в каталоге c:tempuploads, и в файле Напишите привет в формате .
частная пустота OpenFile()
{
FileStream.TextFile=File.Open(@"c:tempuploadsnewFile.txt", FileMode.Append);
byte [] Информация = {(байт)'h',(байт)'e',(байт)'l',(байт)'l',(байт)'o'};
TextFile.Write(Информация,0,Информация.Длина);
ТекстовыйФайл.Закрыть();
}
(2) Метод создания файла: File.Create
Объявление этого метода выглядит следующим образом:
public static FileStream Create(string path;)
Следующий код демонстрирует, как создать файл с именем newFile.txt в папке c:tempuploads.
Поскольку метод File.Create по умолчанию предоставляет всем пользователям полный доступ на чтение и запись к новым файлам, файл открывается с доступом на чтение и запись и должен быть закрыт, прежде чем его можно будет открыть другим приложением. Для этого вам нужно использовать метод Close класса FileStream, чтобы закрыть созданный файл.
частная пустота MakeFile()
{
FileStream NewText=File.Create(@"c:tempuploadsnewFile.txt");
НовыйТекст.Закрыть();
}
(3) Метод удаления файла: File.Delete
Этот метод объявлен следующим образом:
public static void Delete(string path);
Следующий код демонстрирует, как удалить файл newFile.txt в каталоге c:tempuploads.
частная пустота УдалитьФайл()
{
File.Delete(@"c:tempuploadsnewFile.txt");
}
(4) Метод копирования файла: File.Copy
Этот метод объявлен следующим образом:
public static void Copy(string sourceFileName,string destFileName,bool overwrite
Следующий код копирует c:tempuploadsnewFile.txt в c:tempuploads); Резервное копирование.txt.
Поскольку для параметра OverWrite метода Cope установлено значение true, если файл BackUp.txt уже существует, он будет перезаписан скопированным файлом.
частная пустота CopyFile()
{
File.Copy(@"c:tempuploadsnewFile.txt",@"c:tempuploadsBackUp.txt",true);
}
(5) Метод перемещения файла: File.Move
Этот метод объявлен следующим образом:
public static void Move(string sourceFileName,string destFileName);
Следующий код может переместить файл BackUp.txt из каталога c:tempuploads в корневой каталог; диск c.
Примечание.
Перенос файлов можно выполнять только на одном логическом диске. Если вы попытаетесь перенести файлы с диска C на диск D, произойдет ошибка.
частная пустота MoveFile()
{
File.Move(@"c:tempuploadsBackUp.txt",@"c:BackUp.txt");
}
(6) Метод установки атрибутов файла: File.SetAttributes
Этот метод объявлен следующим образом:
public static void SetAttributes(string path,FileAttributes fileAttributes).
Следующий код может установить атрибуты файла c:tempuploadsnewFile.txt в значение. только для чтения или скрыто.
частная пустота SetFile()
{
File.SetAttributes(@"c:tempuploadsnewFile.txt",
FileAttributes.ReadOnly|FileAttributes.Hidden);
}
Помимо часто используемых атрибутов «только для чтения» и «скрытый», файлы также имеют атрибуты «Архив» (состояние файлового архива), «Система» (системные файлы), «Временные» (временные файлы) и т. д. Подробную информацию об атрибутах файлов см. в описании FileAttributes в MSDN.
(7) Метод определения существования файла: File.Exist
Этот метод объявлен следующим образом:
public static bool Exists(string path);
Следующий код определяет, существует ли файл c:tempuploadsnewFile.txt; Если он существует, сначала скопируйте файл, затем удалите его и, наконец, переместите скопированный файл, если он не существует, сначала создайте файл, затем откройте файл и выполните операции записи и, наконец, установите атрибуты файла только для чтения; и скрыто.
if(File.Exists(@"c:tempuploadsnewFile.txt")) //Определяем, существует ли файл
{
CopyFile(); //Копируем файлDeleteFile(); //Удаляем файлMoveFile(); //Перемещаем файл.
}
еще
{
MakeFile(); //Сгенерируем файл OpenFile(); //Открываем файл SetFile(); //Установим атрибуты файла.
}
Кроме того, класс File обеспечивает дополнительную поддержку текстового текста.
· AppendText: добавить текст в существующий файл.
· CreateText: создать или открыть новый файл для записи текста.
· OpenText: открыть существующий текстовый файл для чтения.
Но приведенный выше метод в основном работает с текстом в кодировке UTF-8, поэтому он выглядит недостаточно гибким. Читателям рекомендуется использовать следующий код для работы с текстовыми файлами.
· Выполнение операции чтения текстовых файлов. Пример кода выглядит следующим образом:
StreamReader TxtReader = new StreamReader(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
строка FileContent;
FileContent = TxtReader.ReadEnd();
TxtReader.Close();
· Выполнение операции записи в текстовый файл. Пример кода выглядит следующим образом:
StreamWriter = new StreamWrite(@"c:tempuploadsnewFile.txt",System.Text.Encoding.Default);
строка FileContent;
TxtWriter.Write(FileContent);
TxtWriter.Close();
Класс System.IO.Directory и класс System.DirectoryInfo
в основном предоставляют различные операции с каталогом, и при их использовании необходимо ссылаться на пространство имен System.IO. Его основные атрибуты и методы представлены ниже на примерах программ.
(1) Метод создания каталога: Directory.CreateDirectory
Этот метод объявлен следующим образом:
public static DirectoryInfo CreateDirectory(string path);
Следующий код демонстрирует создание каталога с именем NewDirectory в папке c:tempuploads;
частная пустота MakeDirectory()
{
Directory.CreateDirectory(@"c:tempuploadsNewDirectoty");
}
(2) Метод установки атрибута каталога:
код ниже DirectoryInfo.Atttributes устанавливает каталог c:tempuploadsNewDirectory в режим только для чтения и скрытый. Как и атрибуты файлов, атрибуты каталогов также задаются с помощью FileAttributes.
частная пустота SetDirectory()
{
DirectoryInfo NewDirInfo = новый DirectoryInfo(@"c:tempuploadsNewDirectoty");
NewDirInfo.Atttributes = FileAttributes.ReadOnly|FileAttributes.Hidden;
}
(3) Метод удаления каталога: Directory.Delete
Этот метод объявлен следующим образом:
public static void Delete(string path,bool recursive);
Следующий код может удалить каталог c:tempuploadsBackUp; Второй параметр метода Удалить имеет тип bool, который может определить, следует ли удалять непустой каталог. Если значение параметра истинно, весь каталог будет удален, даже если в каталоге есть файлы или подкаталоги, если оно ложно, каталог будет удален, только если он пуст;
частная пустота DeleteDirectory()
{
Directory.Delete(@"c:tempuploadsBackUp",true);
}
(4) Метод перемещения каталога: Directory.Move
Этот метод объявлен следующим образом:
public static void Move(string sourceDirName, string destDirName);
Следующий код перемещает каталог c:tempuploadsNewDirectory в c:tempuploadsBackUp;
частная пустота MoveDirectory()
{
File.Move(@"c:tempuploadsNewDirectory",@"c:tempuploadsBackUp");
}
(5) Получить все подкаталоги в текущем каталоге: Directory.GetDirectories
Этот метод объявлен следующим образом:
public static string[] GetDirectories(string path;);
Следующий код считывает все подкаталоги в каталоге c:tempuploads, и сохраните его в массив строк.
частная пустота GetDirectory()
{
строка [] Каталоги;
Каталоги = Каталог. GetDirectories (@"c:tempuploads");
}
(6) Метод для получения всех файлов в текущем каталоге: Directory.GetFiles
Этот метод объявлен следующим образом:
public static string[] GetFiles(string path;);
Следующий код считывает все файлы в каталоге c:tempuploads. и сохраните его в массив строк.
частная пустота GetFile()
{
строка [] Файлы;
Файлы = Каталог. GetFiles (@"c:tempuploads",);
}
(7) Метод определения существования каталога: Directory.Exist
Этот метод объявлен следующим образом:
public static bool Exists(
строковый путь;
);
Следующий код определяет, существует ли каталог c:tempuploadsNewDirectory. Если он существует, сначала получите подкаталоги и файлы в каталоге, затем переместите их и, наконец, удалите перемещенный каталог. Если он не существует, сначала создайте каталог, а затем установите атрибуты каталога «только для чтения» и «скрытый».
if(File.Exists(@"c:tempuploadsNewDirectory")) //Определяем, существует ли каталог
{
GetDirectory(); //Получаем подкаталог GetFile(); //Получаем файл MoveDirectory() //Перемещаем каталог DeleteDirectory(); //Удаляем каталог.
}
еще
{
MakeDirectory(); //Сгенерируем каталог SetDirectory(); //Установим атрибуты каталога.
}
Примечание.
Существует три способа указать путь: относительный путь в текущем каталоге, относительный путь на текущем рабочем диске и абсолютный путь. В качестве примера возьмем C:TmpBook (при условии, что текущий рабочий каталог — C:Tmp). «Книга», «TmpBook», «C:TmpBook» — все это означает C:TmpBook.
Кроме того, "" — это специальный символ в C#, и для его выражения необходимо использовать "\". Поскольку такой способ записи неудобен, в языке C# предусмотрен @ для его упрощения. Просто добавьте @ перед строкой, чтобы напрямую использовать «". Таким образом, указанный выше путь должен быть выражен как "Book", @"TmpBook", @"C:TmpBook" в C#.