Лекция: Доступ к файлам. Открытие файлов. Использование объекта File. Использование объекта FileStream. Чтение файлов. Запись файлов. Прочие операции с файлами и каталогами. Объекты File

Довольно часто для выполнения тех или иных функций веб-приложения требуется работать с текстовыми файлами. В ASP.NET для работы с текстовыми файлами есть класс File (System.IO namespace). Метод OpenText объекта класса File возвращает StreamReader, который можно «прочитать» при помощи двух методов: Read() и ReadToEnd().

Код примера довольно прост: сценарий выполняется в событии Page_Load, открывает файл выполняемоего скрипта и отображает его содержимое в браузере. Для удобства чтения символы перевода строки автоматически заменяются на HTML-тэг <br />.

C# (CSharp_fileOpen.aspx)

<%@Page Language=«C#»%>

<%@ import namespace=«System.IO» %>

<html>

<head>

<title>Using File Class in ASP.NET and C#</title>

</head>

<body>

<script language=«C#» runat=«server»>

void Page_Load() {

String fileName = «c:\\inetpub\\wwwroot\\CSharp_fileOpen.aspx»; //Файл, который надо открыть

StreamReader strmR = File.OpenText(fileName); //Открытие файла

lblStart.Text = Server.HtmlEncode(strmR.ReadToEnd()).Replace("\n", "<br />");//Чтение файла и вывод его содержимого в элемент Label

strmR.Close();

}

</script>

<asp:label runat=«server» id=«lblStart» />

</body>

</html>

File — класс, который предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов, а также помогает при создании объектов FileStream.

В следующем примере показано, как использовать класс File чтобы проверить, существует ли файл, и в зависимости от результата или создайте новый файл и запись в него или открыть существующий файл и чтение из нее.

C#

using System;

using System.IO;

class Test

{

public static void Main()

{

string path = @«c:\temp\MyTest.txt»;

if (!File.Exists(path))

{

// Create a file to write to.

using (StreamWriter sw = File.CreateText(path))

{

sw.WriteLine(«Hello»);

sw.WriteLine(«And»);

sw.WriteLine(«Welcome»);

}

}

// Open the file to read from.

using (StreamReader sr = File.OpenText(path))

{

string s = "";

while ((s = sr.ReadLine()) != null)

{

Console.WriteLine(s);

}

}

}

}

FileStream — класс, который предоставляет потоковый ввод/вывод в файле, поддерживая синхронные и асинхронные операции чтения и записи.

C#

using System;

using System.IO;

using System.Text;

class Test

{

public static void Main()

{

string path = @«c:\temp\MyTest.txt»;

// Delete the file if it exists.

if (File.Exists(path))

{

File.Delete(path);

}

//Create the file.

using (FileStream fs = File.Create(path))

{

AddText(fs, «This is some text»);

AddText(fs, «This is some more text,»);

AddText(fs, "\r\nand this is on a new line");

AddText(fs, "\r\n\r\nThe following is a subset of characters:\r\n");

for (int i=1;i < 120;i++)

{

AddText(fs, Convert.ToChar(i).ToString());

 

}

}

//Open the stream and read it back.

using (FileStream fs = File.OpenRead(path))

{

byte[] b = new byte[1024];

UTF8Encoding temp = new UTF8Encoding(true);

while (fs.Read(b,0,b.Length) > 0)

{

Console.WriteLine(temp.GetString(b));

}

}

}

private static void AddText(FileStream fs, string value)

{

byte[] info = new UTF8Encoding(true).GetBytes(value);

fs.Write(info, 0, info.Length);

}

}

Открытие файлов

ASP.NET позволяет открывать файлы с двоичным и Unicode доступом. Unicode переводит двоичные последовательности в символы, предназначенные для чтения, такие как буквы и цифры.

Использование объекта File

Одним из способов открытия файла является использование объекта File. После того, как файл ассоциирован с объектом, могут использоваться различные методы его открытия, в зависимости от того, что мы собираемся с ним делать. В табл. 13.2 перечислены эти методы.

Таблица 13.2. Методы открытия файлов объекта File

Метод Описание
Open Открывает файл с определенными привилегиями и возвращает объект Stream
OpenRead() Открывает поток только для чтения файла
OpenText() Возвращает объект streamReader для существующего файла
OpenWrite() Открывает поток Stream для чтения-записи

 

1) Метод Open имеет 3 параметра: FileMode, FileAccess и FileShare (в приведенной последовательности). Первый из них, FileMode, определяет режим открытия файла операционной системой: для перезаписи существующего файла или для добавления дан-Ных к нему.;

Параметр FileAccess определяет привилегии доступа к файлу. Допустимые значения: Read (только для чтения), ReadWrite (для чтения и записи) и Write (только для записи).

Последний параметр, FileShare, определяет действия при попытке одновременного Доступа к файлу нескольких пользователей. дополнительного параметра None, определяющего эксклюзивные права данного процесса для доступа к файлу.

Хотелось бы отметить, что все методы класса File, за исключением OpenText, возвращают объект потока stream, обеспечивающий двоичный доступ к данным.

Следующий фрагмент показывает пример использования объекта File для открытия файла:

' создаем объект File и Streamreader

dim objFile as new File(Server.MapPath{«log.txtH)}

dim objReader as StreamReader

' открываем файл

objReader=objFile.OpenText

' выполняем какие-либо действия и закрываем StreamReader

objReader.Close

Тот же пример с использованием метода Open:

dim objFile as new File(Server.MapPath(»log.txt"})

dim objStream as Stream

objStream=objFile.Open(FileMode.OpenOrCreate, FileAccess.Read)

Использование объекта FileStream

Объект FileStream позволяет создать поток Stream для доступа к файлу. Основное достоинство— отсутствие необходимости использовать вначале объект File. Однако все-таки прежде нужно убедиться, что искомый файл существует.

В следующем фрагменте продемонстрировано открытие файла:

dim fs as new FileStream(Server.MapPath(“log.txt”), FileMode.OpenOrCreate)

Мы открыли файл в режиме OpenOrCreate.

Объект FileStream также имеет метод Seek перемещения в границах открытого потока. Синтаксис его следующий: Seek (offset,origin)

Смешение offset показывает, насколько далеко от базиса нам следует переместиться. Базис может принимать следующие значения: SeekOrigin.Begin (начало файла), SeekOrigin.Current (текущая позиция), SekOrigin.End (конец файла).

Чтение файлов

Теперь, после того как мы открыли файл, мы готовы к чтению его содержимого. В основном, ASP. NET осуществляет это с помощью объекта StreamReader. Как было отмечено ранее, этот объект конвертирует данные из двоичных в Unicode, предоставляя нам строку символов, готовых к отображению на странице. Инициализация объекта StreamReader проста:

dim ObjReader as new StreamReader(object)

Объект object может быть любым потоковым объектом (например, FileStream из предыдущего фрагмента) или путем к файлу.

Объект StreamReader использует несколько методов чтения символов из файла. Первый, Read, возвращает один символ из потока как целое число и переходит к следующему, например:

dim f as new File(Server,MapPath{«log.txt»)) ob jReader=f.OpenText Response.Write(objReader.Read & "<br>"} objReader.Close

Преобразуем числа в символы Unicode методом Chr класса Strings:

Response.Write(Strings.Chr(objReader.Read) & "<br>")

ReadLine читает все символы до достижения перевода строки, и

ReadToEnd, читающий символы до достижения конца потока

Peekсчитывает следующий символ, но не возвращает его. Это позволяет проверить наличие следующего символа в потоке. Если он не обнаружен, метод Peek возвращает -1.

Запись файлов

Объект StreamWriter позволяет записывать данные в потоки.

еще рефераты
Еще работы по информатике