Книга: Программирование мобильных устройств на платформе .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;
}

Оглавление книги


Генерация: 1.314. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз