1 / 44

Профільна інформатика 10 клас

Профільна інформатика 10 клас. Робота з файлами в C#. Потік. Будь- яке введення і виведення інформації в . Net Framework включає в себе використання потоків .

kioshi
Download Presentation

Профільна інформатика 10 клас

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Профільна інформатика10 клас Робота з файлами в C#

  2. Потік Будь- яке введенняівиведенняінформації в .NetFrameworkвключає в себе використанняпотоків. Потік - абстрактнеуявленняпослідовностіпристроїв, щополегшуєпослідовнезберіганняданих та доступ до них (по одному байту в коженконкретний момент часу). В якості такого пристрою можутьвиступатирозташований на диску файл, принтер, область пам'яті, будь-якийіншийоб'єктдопускаєпослідовнезчитування та записінформації). У просторііменSystem.IOзберігаютьсякласи, призначені для зчитуванняізаписуданих в файли.

  3. Робота з файлами • Створення файлу: FileInfofi = new FileInfo("new.txt"); fi.Create(); 2. Вилучення файлу: FileInfofi = new FileInfo("new.txt"); fi.Delete();

  4. МетодClose () Після всіх дій над файлом не забуваємо закривати його використовуючи метод Close (), в іншому випадку зміни у файлі не не будуть збережені. Наведений приклад запису файлу повністю перезаписує його, якщо треба дописати в кінець файлу: StreamWritersw; FileInfofi = new FileInfo(@“d:\name.txt"); sw = fi.AppendText(); sw.WriteLine(“Все буде добре!!!"); sw.Close();

  5. Запис у файл Для запису (а в подальшому і для читання) в файл ми будемо використовувати символьні потоки дозволяють оперувати безпосередньо з символами Unicode. StreamWriter SW = newStreamWriter (@”e:\name.txt”); sw.WriteLine (“Ми навчимося працювати з файлами. А зараз запишемо цей текст у файл name.txt "); sw.Close ();

  6. До уваги! FileStream - представляє потік, який вказує на файл або розташування в мережі. Являє файл для зчитування / запису, оперує байтами і масивом байтів, в той час як Streamоперує символьними даними.

  7. FileStreamfs = new FileStream ("d:\\log.txt", FileMode.OpenOrCreate, FileAccess.Read); >> EnumFileMode { Append, / / відкриває (якщоіснує), переводить покажчик в кінець, абостворюєновий файл. МожевикористовуватисятількиспільнозFileAccess.WriteCreate, // створює (якщоіснує - замінює) CreateNew, // створює (якщоіснує - генеруєтьсявиключення) Open, // відкриває (якщо не існує - генеруєтьсявиключення) OpenOrCreate, // якщоіснуєвідкриває, інакшестворюєновий Truncate // відкриваєіснуючий файл, але всю інформаціювсерединізатирає (якщо не існує - виняток) >> EnumFileAccess {Rad, Write, ReadWrite} FileStreamfs = File.OpenRead ("d:\\log.txt"); //відкриває "тількичитання" FileStreamfs = File.OpenWrite ("d:\\log.txt"); //відкриває для запису

  8. Клас FileStreamпідтримує внутрішній покажчик файлу, що посилається на те місце у файлі, в якому буде проводитись чергова операція читання / запису. Метод Seek () дозволяє здійснити пошук конкретної позиції у файлі (байтової). publiclongSeek (longoffset, SeekOriginorigin); // origin = {Begin, End, Current} // Offset - на скільки вперед в байтах повинен бути пересунутий покажчик // Origin - з якої точки вести відлік fs.Seek (-5, SeekOrigin.End); // переходить на 5й з кінця байт файлу

  9. Класи Stream дозволяють здійснювати послідовний доступ до файлів, і в них не передбачена можливість роботи з покажчиком. StreamWriter - дозволяє здійснювати запис в файл символів та рядків і самостійно виконує всі необхідні перетворення.

  10. Читанняз файлу Для того щоб файл бувкоректнозчитаний (без всяких незрозумілихсимволів), він повинен бути збережений в юнікоді. using (StreamReaderstreamReader = new StreamReader("name.txt")) { string str = ""; while (!streamReader.EndOfStream) { str += streamReader.ReadLine(); } } Або using (StreamReaderstreamReader = new StreamReader(@"e:\test.txt")) { string str = "", str_temp = ""; while ((str_temp = streamReader.ReadLine()) != null) { str += str_temp; } } По виходуз блоку using, потік, зякимвипрацювали, автоматично закриється.

  11. Console.WriteLine("Ми створюємо два текстовiфайлиiзаписуємо в них рiзнуiнформацiю"); StreamWritersw = new StreamWriter ("d:\\lon.txt",true); StreamWriterfs = new StreamWriter("d:\\log.txt", true); sw.WriteLine("Привіт, світ!"); sw.WriteLine("Це я"); sw.Close (); fs.WriteLine("Ми ввели дані у файл log"); fs.WriteLine("Ми - це я"); fs.Close();

  12. string path = @"e:\MyTest.txt"; try { if (File.Exists(path)) { File.Delete(path); } using (StreamWritersw = new StreamWriter(path)) { sw.WriteLine("Просто текст"); } using (StreamReadersr = new StreamReader(path)) { while (sr.Peek() != -1) // перевіряєнаступний символ, але не зчитує { Console.WriteLine(sr.ReadLine()); } } } catch (Exception e) { Console.WriteLine("Цей процес не вдавcя: {0}", e.ToString()); }

  13. FileStreamWatcher - використовується для стеження за станом файловоїсистеми (файлівідиректорій) ігенеруєподії в моменти, коли змінюєтьсяїхрозташування. Спочаткупотрібнозадатизначеннявластивостей, визначивши, де слідздійснювати контроль, щопотрібноконтролюватиі коли слідгенеруватиподії. властивості: Path - шлях до файлу / директорії, щопідлягає контрою. NotifyFilter - поєднаннязначеньперераховується типу NotifyFilters, яке дозволяєвизначити за настаннямякихсамеподій для данихфайлівслідспостерігати. {АтрибутиCreationTime, ім'я_папки, FileName, LastAccess, LastWrite, безпека, розмір}. Допускаєтьсявикористаннярізнихпоєднаньцихзначень за допомогою оператора | або &. Filter - фільтр, якийвизначаєякісамефайлипідлягають контролю, наприклад, *. Txt EnableRaisingEvents - післязавданнявсіхвластивостейнеобхіднопривласнитизначенняTrue, щоозначатиме початок спостереження.

  14. Програма повинна створити два текстових файла з числами по такій закономірності : перший 1,2,5,6,9,10,13,14,17,18, другий 3,4,7,8,11,12,15,16,19,20, stringpath = @ "E: \ first.txt"; string path2 = @ "E: \ second.txt"; StreamWriter f1 = newStreamWriter (path); // об'єкт для запису в перший файл StreamWriter f2 = newStreamWriter (path2); // об'єкт для запису в другій файл // у циклі обчислюємо необхідну послідовність for (int i = 1; i <20; i + = 4) { f1.Write (i.ToString () + "," + (i + 1). ToString () + ","); // запис в перший файл f2.Write ((i + 2). ToString () + "," + (i + 3). ToString () + ","); // запис у другій файл } f1.Close (); f2.Close (); // закриваємо файли

  15. МожливізначенняFileModeіFileAccess

  16. Значення FileMode

  17. Запис в текстовий файл за допомогоюкласуStreamWriter Текстові дані або будь-яку іншу інформацію можна записати у файл використовуючи метод CreateText () в класі FileInfo. Однак попередньо необхідно отримати валіднийStreamWriter. Саме StreamWrite забезпечує необхідну функціональність для запису у файл.

  18. stringpath = @"E:\first.txt"; FileInfo f = newFileInfo(@"E:\first.txt"); StreamWriter w = f.CreateText(); //записуємо у файл по рядкам з переходом на наступний рядок w.WriteLine("Перший запис"); w.WriteLine("Другий запис"); w.WriteLine("Третій запис"); w.Write(w.NewLine); // пропускаємо один рядок w.WriteLine("Останній запис"); w.Close();

  19. Читанняз текстового файлу Для читання з текстового файлу можна скористатися класом StreamReader. Для цього необхідно вказати ім'я файлу в статичному методі OpenText () класу File. Наступний приклад зчитує вміст файлу, який було записано в попередньому прикладі: Console.WriteLine("Читаннявмiстуз файлу"); StreamReader s = File.OpenText(path); string read = null; while ((read = s.ReadLine()) != null) { Console.WriteLine(read); } s.Close();

  20. conststringfileName = @"e:\Test.txt"; // Створення випадкових даних для запису у файл. byte[] dataArray = newbyte[10]; newRandom().NextBytes(dataArray); using(FileStream fileStream = newFileStream(fileName, FileMode.Create)) { // Запис даних у файл, байт в байт. for(int i = 0; i < dataArray.Length; i++) { fileStream.WriteByte(dataArray[i]); } // Установити позицію в потоці на початок файлу. fileStream.Seek(0, SeekOrigin.Begin); // Читання і перевірка даних. for(int i = 0; i < fileStream.Length; i++) { If (dataArray[i] != fileStream.ReadByte()) { Console.WriteLine("Помилка запису даних."); return; } } Console.WriteLine("Данi записуються в {0} " + "i перевiренi ", fileStream.Name); }

  21. Запис у файл іперезапис в файл в C # Звернітьувагу на слово false. Це говорить про те, що файл буде перезаписуватисякожен раз, якби ми написали true, то в наш файл постійнододаваласяінформація, а не перезаписувати. Отже: System.IO.StreamWritervvod = new System.IO.StreamWriter ("files / result.txt", false); // перезапис у файл System.IO.StreamWritervvod = new System.IO.StreamWriter ("files / result.txt", true); // запис у файл здодаванням Після кожного запуску програми на виконання у текстовий файл дописуються дані

  22. Запис у файл іперезапис в файл в C # Отже, для запису у файл з перезаписом потрібно написати так: System.IO.StreamWritervvod = new System.IO.StreamWriter ("files_result.txt", false); vvod.WriteLine ("Запис у файл"); vvod.Close (); Після невеличких змін у тексті для виводу та перезапуску програми – перезаписано новий текст у файл

  23. Асинхронний доступ до файлів Додаток може виконувати якісь дії паралельно з процесом введення / виводу файлу, замість очікування закінчення цього процесу. Процес зчитування файла починається з виклику методу BeginRead (), методу передаються параметри аналогічні методу Read () + додаткові, необхідні для здійснення асинхронного процесу.

  24. stringfileName = @"e:\Mahesh.txt"; try { // Перевірте, якщо файл вже існує. Якщо так, то видаліть його. if (File.Exists(fileName)) { File.Delete(fileName); } // Щоб створити новий файл using (FileStreamfs = File.Create(fileName)) { // Додати текст в файл Byte[] title = new UTF8Encoding(true).GetBytes("Новий текстовий файл "); fs.Write(title, 0, title.Length); byte[] author = new UTF8Encoding(true).GetBytes("Учнiпрофiльного класу "); fs.Write(author, 0, author.Length); } // Відкрити потік і прочитати його using (StreamReadersr = File.OpenText(fileName)) { string s = ""; while ((s = sr.ReadLine()) != null) { Console.WriteLine(s); } } } catch (ExceptionEx) { Console.WriteLine(Ex.ToString()); }

  25. Використаний метод маєчотириперевантаженихформипредставленняваріантівзрозміром буфера файлу, файл налаштувань, файлівібезпеку. Створення файлу іззаданимрозміром буфера File.Create (ім'я файлу, кількість байт буфера для читанняізапису у файл) FileStreamfs = File.Create(fileName, 1024);

  26. Створення файлу з Параметрами Метод File.Create займає три параметри, як FileOptions перерахування, які можна використовувати, щоб вказати додаткові параметри для створення об'єкта FileStream. FileStreamfs = File.Create(fileName, 1024, FileOptions.WriteThrough); (FileStreamfs = File.Create(ім'я файлу, 1024, FileOptions.WriteThrough);)

  27. Створення файлe з FileSecurity Щоб створити метод також слід вказати параметри безпеки файлів. Четвертий параметр, передаваний в метод створює об'єкт типу FileSecurity.

  28. Метод File.CreateText МетодFile.CreateTextстворюєівідкриває файл для записуUTF-8 закодованого тексту. Якщо файл вжеіснує, цей метод відкриває файл. Наступний фрагмент коду створює файл за допомогоюCreateTextметод, якийповертаєоб'єктStreamWriter.WriteLineметодом SteamLineіможе бути використаний для додавання рядка тексту на об'єктізапису у файл.

  29. string fileName = @"e:\proba.txt"; try { //Перевіряємо, якщо файл вжеіснує. Якщо так, то видалимойого if (File.Exists(fileName)) { File.Delete(fileName); } // створюємоновий файл using (StreamWritersw = File.CreateText(fileName)) { sw.WriteLine("Новий файл створений: {0}", DateTime.Now.ToString()); sw.WriteLine("Автор: Учитель"); sw.WriteLine("Додатище один рядок"); sw.WriteLine("Додатище один рядок"); sw.WriteLine("Готово! "); } // Записативміст файлу на консоль. using (StreamReadersr = File.OpenText(fileName)) { string s = ""; while ((s = sr.ReadLine()) != null) { Console.WriteLine(s); } } } catch (Exception Ex) { Console.WriteLine(Ex.ToString()); }

  30. Метод FileInfo.Create FileInfo.Createметод створює файл. Наступний фрагмент коду створює файл за допомогою методу, якийповертає, щобстворитиFileSteamоб'єкта. Написаний метод FileStreamможе бути використаний для запису тексту у файл.

  31. string f1 = @"e:\proba1.txt"; FileInfofi = new FileInfo(f1); try { if (fi.Exists) { fi.Delete(); } using (FileStreamfs = fi.Create()) { Byte[] txt = new UTF8Encoding(true).GetBytes("Новий файл "); fs.Write(txt, 0, txt.Length); Byte[] author = new UTF8Encoding(true).GetBytes("АвторУчительiнформатики"); fs.Write(author, 0, author.Length); } // Write file contents on console. using (StreamReadersr = File.OpenText(f1)) { string s = ""; while ((s = sr.ReadLine()) != null) { Console.WriteLine(s); } } } catch (Exception Ex) { Console.WriteLine(Ex.ToString()); }

  32. Метод FileInfo.CreateText FileInfo.CreateText метод створює і відкриває файл для запису UTF-8 закодованого тексту. Якщо файл вже існує, цей метод відкриває файл. Наступний фрагмент коду створює файл за допомогою методу CreateText, який повертає об'єкт StreamWriter.WriteLine. Метод може бути використаний для додавання рядка тексту на об'єкт і запису у файл.

  33. string fileName = @"e:\proba2.txt"; FileInfofi = new FileInfo(fileName); try { if (fi.Exists) { fi.Delete(); } using (StreamWritersw = fi.CreateText()) { sw.WriteLine("Новий файл створено: {0}", DateTime.Now.ToString()); sw.WriteLine("Автор: ученьпрофiльногокласу"); sw.WriteLine("Додатище один рядок "); sw.WriteLine("А потiмще один рядок "); sw.WriteLine("Завершимо! "); } using (StreamReadersr = File.OpenText(fileName)) { string s = ""; while ((s = sr.ReadLine()) != null) { Console.WriteLine(s); } } } catch (Exception Ex) { Console.WriteLine(Ex.ToString()); }

  34. Метод File.Create File.Create метод приймає ім'я файлу з повним шляхом, як її перший і обов'язковий параметр і створює файл у вказаному місці. Якщо ж файл вже існує в тому ж місці, цей метод замінює файл. Наступний фрагмент коду створює файл Proba4.txt в e:\ . Якщо файл вже існує, код буде видаляти існуючий файл. Код записує два масиви байт у файлі. Створений метод створює і повертає об'єкт FileStream, який відповідає за читання і запис у вказаний файл.

  35. StreamWriter class MainClass { static void Main() { using (FileStreamfs = new FileStream(@"e:\test.txt", FileMode.Create)) { using (StreamWriter w = new StreamWriter(fs, Encoding.UTF8)) { w.WriteLine(124.23M); w.WriteLine("Текст рядком"); w.WriteLine("!"); } } Console.WriteLine("Натиснiть клавiшуEnter, щобпрочитатиiнформацiю."); Console.ReadLine(); using (FileStreamfs = new FileStream(@"e:\test.txt", FileMode.Open)) { using (StreamReader r = new StreamReader(fs, Encoding.UTF8)) { Console.WriteLine(Decimal.Parse(r.ReadLine())); Console.WriteLine(r.ReadLine()); Console.WriteLine(Char.Parse(r.ReadLine())); } } } }

  36. StreamWriter.Flush public class MainClass { public static void Main() { FileStreamoutStream = File.Create(@"e:\TextTest.txt"); StreamWritersw = new StreamWriter(outStream); sw.WriteLine("Це тест StreamWriterклас"); sw.Flush(); sw.Close(); StreamReadersr = new StreamReader(@"e:\TextTest.txt"); string FirstLine; FirstLine = sr.ReadLine(); Console.WriteLine(FirstLine); sr.Close(); } }

  37. StreamWriter.Write public static void Main() { FileStream fs2 = File.Create(@"e:\newText.txt"); StreamWriter w2 = new StreamWriter(fs2); w2.Write("Успiхiв у вивченнiпрограмування!"); w2.Close(); fs2 = File.Open(@"e:\newText.txt", FileMode.Open, FileAccess.Read, FileShare.None); StreamReader r2 = new StreamReader(fs2); String t; while ((t = r2.ReadLine()) != null) { Console.WriteLine(t); } w2.Close(); fs2.Close(); } }

  38. StreamWriter.WriteLine public class IOExample { static void Main() { FileStreamfs; StreamWritersw; try { fs = new FileStream(@"e:\newText.txt", FileMode.Open); // якщо з таким іменем файлу ще не було створено, то про це буде виведено повідомлення sw = new StreamWriter(fs); // написати рядок у файл stringnewLine = "Не правильно вiдрiзняється у вас i в мене "; sw.WriteLine(newLine); // закрити потоки sw.Close(); fs.Close(); Console.WriteLine("Все добре!"); } catch (IOExceptionioe) { Console.WriteLine("IOExceptionвiдбулося: " + ioe.Message); } } }

  39. Приклад class Program { static void Main(string[] args) { string fs2 = @"e:\newText.txt"; { // Перевірка на існування файлу, якщоіснує - видалити, якщоні – будемостоворитиновий. if (File.Exists(fs2)) { File.Delete(fs2); } // Створення файлу ідодавання у ньогоінформації using (FileStreamfs = File.Create(fs2)) { // Додавання тексту Byte[] title = new UTF8Encoding(true).GetBytes("Новийтекстовий файл "); fs.Write(title, 0, title.Length); byte[] author = new UTF8Encoding(true).GetBytes(" Г.Т."); fs.Write(author, 0, author.Length); } } } }

  40. Рекомендовано прочитати • http://nfex.ru/index.php/Csharp/CSharp_Tutorial • http://nfex.ru/index.php/Csharp/C_Sharp_by_API/System.Text/StringBuilder • http://sauron.org.ua/view_post.php?id=46

More Related