Книга: Программирование мобильных устройств на платформе .NET Compact Framework
Листинг 15.1. Простой код файлового ввода-вывода, иллюстрирующий различия между локальной и удаленной передачей данных
Листинг 15.1. Простой код файлового ввода-вывода, иллюстрирующий различия между локальной и удаленной передачей данных
private void button1_Click(object sender, System.EventArgs e) {
//Запись в локальный файл
WriteFile("testfile.txt");
//Замените имя сервера (MyFileServer) именем своего сервера
//и удалите символы комментария.
//Запись в файл, находящийся в общей сетевой папке (MyFileShare) на сервере:
//"MyFileServerMyFileShare"
//WriteFile("\MyFileServerMyFileSharetestfile.txt");
System.Windows.Forms.MessageBox.Show("Success");
}
private void button2_Click(object sender, System.EventArgs e) {
//Чтение из локального файла
int numberLinesInFile;
numberLinesInFile = CountNumberLinesInFile("testfile.txt");
//Отобразить количество считанных строк
System.Windows.Forms.MessageBox.Show(
"Successfully read file " + numberLinesInFile.ToString() + " Lines.");
//Замените имя сервера (MyFileServer) именем своего сервера
//и удалите символы комментария.
/* //Записать файл из общей сетевой папки:
//"MyFileServerMyFileShare"
numberLinesInFile = CountNumberLinesInFile(\MyFileServerMyFileSharetestfile.txt);
//Отобразить количество считанных строк
System.Windows.Forms.MessageBox.Show(
"Successfully read file " + numberLinesInFile.ToString() + " Lines.");
*/
}
private void WriteFile(string filename) {
//----------------------------------------------------------------------
//СОЗДАНИЕ ФАЙЛА:
//
//Для локальных файлов:
// Сбой может возникнуть, если:
// 1. Файл уже существует, и мы не можем осуществить запись поверх него.
// 2. Отсутствует свободное место в файловой системе.
//
//Для файлов на сервере:
// Сбой может возникнуть по вышеперечисленным причинам, а также
// из-за проблем подключения к серверу через сеть,
// проблем безопасности и так далее
//----------------------------------------------------------------------
System.IO.StreamWriter myStreamWriter = System.IO.File.CreateText(filename);
//-------------------------------------------------------------
//ЗАПИСЬ В ФАЙЛ:
//Для локальных файлов:
// Если мы успешно открыли файл, значит, сможем осуществить
// в него запись, лишь бы не исчерпали доступное
// дисковое пространство.
//Для файлов на сервере:
// Сбой может возникнуть по вышеперечисленным причинам, а также
// из-за разрыва нашего сетевого соединения с сервером
//-------------------------------------------------------------
myStreamWriter.WriteLine("Hello!");
myStreamWriter.WriteLine("MyTextFile!");
myStreamWriter.WriteLine("GoodBye!");
//----------------------------------------------------------
//ЗАКРЫТЬ ФАЙЛ:
//Аналогично предыдущему, вероятность сбоя при выполнении
//этой операции повышается при доступе к файлу, находящемуся
//в общей сетевой папке
//----------------------------------------------------------
myStreamWriter.Close();
}
private int CountNumberLinesInFile(string filename) {
int numberLinesInput = 0;
//------------------------------------------------------------------
//ОТКРЫТЬ ФАЙЛ:
//Для локальных файлов:
// В случае доступа к локальным файлам устройства можно генерировать
// исключение, если доступ к файлу оказывается невозможным
//Для файлов на сервере:
// В дополнение ко всем вышеперечисленным причинам возможных сбоев
// при открытии локального файла сбои также возможны
// из-за проблем доступа к сети, принятой на сервере
// политики безопасности и так далее
//------------------------------------------------------------------
System.IO.StreamReader myStreamReader = System.IO.File.OpenText(filename);
string inputLine;
//Организовать построчное чтение файла
do {
//--------------------------------------------------------------
//ВВЕСТИ СТРОКУ:
//Для локальных файлов:
// Если файл был успешно открыт, этот вызов
// никогда не завершится сбоем.
//
//Для файлов на сервере:
// Проблемы доступа к беспроводным сетям, с которыми мы можем
// столкнуться при попытке доступа к файлу, повышают вероятность
// сбоя для этого кода и генерации соответствующего исключения
//--------------------------------------------------------------
inputLine = myStreamReader.ReadLine();
//Если не было возвращено значение 'null', то мы
//не достигли конца файла. Увеличить значение счетчика строк.
if (inputLine != null) {
numberLinesInput++;
}
//Продолжать выполнение, пока в файле есть данные для чтения
} while(inputLine != null);
//----------------------------------------------------------
//ЗАКРЫТЬ ФАЙЛ:
//Аналогично предыдущему, вероятность сбоя при выполнении
//этой операции повышается при доступе к файлу, находящемуся
//в общей сетевой папке
//----------------------------------------------------------
myStreamReader.Close();
//Возвратить количество строк в файле
return numberLinesInput;
}
- Резервное копирование базы данных InterBase
- Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Резервное копирование многофайловых баз данных
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Восстановление из резервных копий многофайловых баз данных
- Владелец базы данных
- ЧАСТЬ IV. База данных и ее объекты.
- Миграция между различными версиями InterBase
- Перевод базы данных InterBase 6.x на 3-й диалект
- Типы данных для работы с датой и временем
- Практическая работа 53. Запуск Access. Работа с объектами базы данных
- 3.4. Отношения между классами