Files and Streams File Types, Using Streams, Manipulating Files SoftUni Team Technical Trainers Software University

Slides:



Advertisements
Similar presentations
Reading and Writing Text Files Svetlin Nakov Telerik Corporation
Advertisements

Software Quality Assurance QA Engineering, Testing, Bug Tracking, Test Automation Software University Technical Trainers SoftUni Team.
Other Types in OOP Enumerations, Structures, Generic Classes, Attributes Svetlin Nakov Technical Trainer Software University
 Dimitar Ivanov Introduction to programming with microcontrollers.
C# Advanced Topics Methods, Classes and Objects SoftUni Team Technical Trainers Software University
AngularJS Routing Routes, Route Parameters, Templates, Location, Navigation SoftUni Team Technical Trainers Software University
AngularJS Services Built-in and Custom Services SoftUni Team Technical Trainers Software University
Methods Writing and using methods, overloads, ref, out SoftUni Team Technical Trainers Software University
Software University Curriculum, Courses, Exams, Jobs SoftUni Team Technical Trainers Software University
Fundamentals SoftUni Welcome to Software University SoftUni Team Technical Trainers Software University
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC SoftUni Team Technical Trainers Software University
Programming Basics Course Introduction SoftUni Team Technical Trainers Software University
AngularJS Directives Defining Custom Directives SoftUni Team Technical Trainers Software University
Software Testing Lifecycle Exit Criteria Evaluation, Continuous Integration Ivan Yonkov Technical Trainer Software University.
Teamwork and Personal Skills Course Introduction Software University SoftUni Team Technical Trainers.
Fundamentals SoftUni Welcome to Software University SoftUni Team Technical Trainers Software University
Design Patterns: Structural Design Patterns
NoSQL Databases NoSQL Concepts SoftUni Team Technical Trainers Software University
Conditional Statements Implementing Control-Flow Logic in C# SoftUni Team Technical Trainers Software University
Redis Key-Value Database: Practical Introduction
Consuming REST Services from C# SoftUni Team Technical Trainers Software University
Loops Repeating Code Multiple Times SoftUni Team Technical Trainers Software University
Database APIs and Wrappers
Entity Framework Performance SoftUni Team Technical Trainers Software University
Methods, Arrays, Lists, Dictionaries, Strings, Classes and Objects
Svetlin Nakov Technical Trainer Software University
Build Processes and Continuous Integration Automating Build Processes Software University Technical Trainers SoftUni Team.
Processing Redis with.NET How to Operate with Redis Databases SoftUni Team Technical Trainers Software University
Multidimensional Arrays, Sets, Dictionaries Processing Matrices, Multidimensional Arrays, Dictionaries, Sets SoftUni Team Technical Trainers Software University.
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC Angel Georgiev Part-time Trainer Software University
Test-Driven Development Learn the "Test First" Approach to Coding SoftUni Team Technical Trainers Software University
Static Members and Namespaces Static Members, Indexers, Operators, Namespaces SoftUni Team Technical Trainers Software University
Files and Streams. Objectives Learn about the classes that support file input/output Understand the concept of abstraction and how it related to the file.
Arrays, Lists, Stacks, Queues Processing Sequences of Elements SoftUni Team Technical Trainers Software University
Asynchronous Web Services Writing Asynchronous Web Services SoftUni Team Technical Trainers Software University
C# Basics Course Introduction Svetlin Nakov Technical Trainer Software University
Sessions and Cookies State Management, Cookies, Sessions, Hidden Fields SoftUni Team Technical Trainers Software University
Jekyll Static Site Generator Template-Based Site Generation Svetlin Nakov Technical Trainer Software University
Forms Overview, Query string, Submitting arrays, PHP & HTML, Input types, Redirecting the user Mario Peshev Technical Trainer Software.
Responsive Design Design that Adapts to Different Devices SoftUni Team Technical Trainers Software University
Exam Preparation Algorithms Course: Sample Exam SoftUni Team Technical Trainers Software University
High-Quality Code: Course Introduction Course Introduction SoftUni Team Technical Trainers Software University
Design Patterns: Structural Design Patterns General and reusable solutions to common problems in software design Software University
Advanced C# Course Introduction SoftUni Team Technical Trainers Software University
Object-Oriented Programming Course Introduction Svetlin Nakov Technical Trainer Software University
Reflection Programming under the hood SoftUni Team Technical Trainers Software University
Mocking with Moq Tools for Easier Unit Testing SoftUni Team Technical Trainers Software University
Operators and Expressions
Code Formatting Formatting the Source Code Correctly SoftUni Team Technical Trainers Software University
Mocking Unit Testing Methods with External Dependencies SoftUni Team Technical Trainers Software University
Mocking with Moq Mocking tools for easier unit testing Svetlin Nakov Technical Trainer Software University
Files and Streams. What is a file? Up until now, any stored data within a program is lost when the program closes. A file is a permanent way to store.
Test-Driven Development Learn the "Test First" Approach to Coding Svetlin Nakov Technical Trainer Software University
Sets, Dictionaries SoftUni Team Technical Trainers Software University
Advanced Tree Structures Binary Trees, AVL Tree, Red-Black Tree, B-Trees, Heaps SoftUni Team Technical Trainers Software University
Functional Programming Data Aggregation and Nested Queries Ivan Yonkov Technical Trainer Software University
Programming Fundamentals Course Introduction SoftUni Team Technical Trainers Software University
Doctrine The PHP ORM SoftUni Team Technical Trainers Software University
Creating Content Defining Topic, Creating Technical Training Materials SoftUni Team Technical Trainers Software University
ASP.NET MVC Course Program, Trainers, Evaluation, Exams, Resources SoftUni Team Technical Trainers Software University
Web Storage and Cookies Cookies, Local and Session Storage SoftUni Team Technical Trainers Software University
First Steps in PHP Creating Very Simple PHP Scripts SoftUni Team Technical Trainers Software University
Inheritance Class Hierarchies SoftUni Team Technical Trainers Software University
Stacks and Queues Processing Sequences of Elements SoftUni Team Technical Trainers Software University
Generics SoftUni Team Technical Trainers Software University
C# OOP Advanced Course Introduction SoftUni Team Technical Trainers Software University
High-Quality Programming Code Code Correctness, Readability, Maintainability, Testability, Etc. SoftUni Team Technical Trainers Software University
Files, Directories, Exceptions
File Types, Using Streams, Manipulating Files
Files and Streams Lect10 GC201 12/1/2015.
Presentation transcript:

Files and Streams File Types, Using Streams, Manipulating Files SoftUni Team Technical Trainers Software University

2 1.What are Files?  Binary and Text Files 2.What are Streams?  Stream Basics 3.Stream Types  File, Memory, Network Streams  Crypto, Gzip Streams 4.Readers and Writers 5.File and Directory Operations Table of Contents

Files What are Files?

 A file is a resource for storing information  Located on a storage device (e.g. hard-drive)  Has name, size, extension and contents  Stores information as series of bytes  Two file types – text and binary Files 4

5 Text Files  Text files contain text information  Store text differently according to the encoding  E.g. in ASCII ( codes) a character is represented by 1 byte  In UTF8 ( codes) a character is represented by 1-4 bytes F i l e F i l e46696c65 С м я х С м я хefbbbfd0a1d0bcd18fd185 Header bytes

6  Binary files store raw sequences of bytes  Can contain any data (images, sound, multimedia, etc.)  Not human-readable Binary Files

Text and Binary Files Live Demo in Hex Editor

What Is Stream? Streams Basic Concepts

9  Stream is the natural way to transfer data in the computer world  To read or write a file, we open a stream connected to the file and access the data through the stream What is Stream? Input stream Output stream

10  Streams are means for transferring (reading and writing) data into and from devices  Streams are ordered sequences of bytes  Provide consecutive access to its elements  Different types of streams are available to access different data sources:  File access, network access, memory streams and others  Streams are opened before using them and closed after that Streams Basics

11  Position is the current position in the stream  Buffer keeps the current position + n bytes of the stream Stream – Example F i l e s a n d F i l e s a n d46696c e64 Length = 9 Position4669 Buffer6c e64

12  Base streams  Read and write data from and to external data storage mechanisms  FileStream, MemoryStream, NetworkStream  Pass-through streams  Read and write from and to other streams  Give additional functionality (buffering, compression, encryption)  BufferedStream and CryptoStream Stream Types in.NET

Base Streams File, Memory, Network

 The base class for all streams is the abstract class System.IO.Stream  There are defined methods for the main operations with streams in it  Some streams do not support read, write or positioning operations  Properties CanRead, CanWrite and CanSeek are provided  Streams which support positioning have the properties Position and Length The System.IO.Stream Class 14

15  int Read(byte[] buffer, int offset, int count)  Read as many as count bytes from input stream, starting from the given offset position  Returns the number of read bytes or 0 if end of stream is reached  Can freeze for undefined time while reads at least 1 byte  Can read less than the claimed number of bytes Methods of System.IO.Stream Class

16  Write(byte[] buffer, int offset, int count)  Writes to output stream sequence of count bytes, starting from the given offset position  Can freeze for undefined time, until send all bytes to their destination  Flush()  Sends the internal buffers data to its destination (data storage, I/O device, etc.) Methods of System.IO.Stream Class (2)

 Close()  Calls Flush()  Closes the connection to the device (mechanism)  Releases the used resources  Seek(offset, SeekOrigin) – moves the position (if supported) with given offset towards the beginning, the end or the current position Methods of System.IO.Stream Class (3) 17

Buffered Streams  Buffer the data and effectively increase performance  Call for read of even 1 byte makes read of more kilobytes in advance  The stream keeps them in an internal buffer  Next read returns data from the internal buffer  Very fast operation 18

 Written data is stored in internal buffer  Very fast operation  When buffer overloads:  Flush() is called  The data is sent to its destination  In.NET we use the System.IO.BufferedStream class Buffered Streams (2) 19

File Stream 20

The FileStream Class  Inherits the Stream class and supports all its methods and properties  Supports reading, writing, positioning operations, etc.  The constructor contains parameters for:  File name  File open mode  File access mode  Competitive users access mode 21

 FileMode – opening file mode  Open, Append, Create, CreateNew, OpenOrCreate, Truncate  FileAccess – operations mode for the file  Read, Write, ReadWrite  FileShare – access rules for other users while file is opened  None, Read, Write, ReadWrite The FileStream Class (2) Optional parameters FileStream fs = new FileStream(string fileName, FileMode [,FileAccess [, FileShare]]); [,FileAccess [, FileShare]]); 22

23  Using try - finally guarantees the stream will always close  Encoding.UTF8.GetBytes() returns the underlying bytes of the character Writing Text to File – Example string text = "Кирилица"; var fileStream = new FileStream("../../log.txt", FileMode.Create); try{ byte[] bytes = Encoding.UTF8.GetBytes(text); byte[] bytes = Encoding.UTF8.GetBytes(text); fileStream.Write(bytes, 0, bytes.Length); fileStream.Write(bytes, 0, bytes.Length);}finally{ fileStream.Close(); fileStream.Close();}

Copying File – Example using (var source = new FileStream(DuckImagePath, FileMode.Open)) { using (var destination = using (var destination = new FileStream(DestinationPath, FileMode.Create)) new FileStream(DestinationPath, FileMode.Create)) { byte[] buffer = new byte[4096]; byte[] buffer = new byte[4096]; while (true) while (true) { int readBytes = source.Read(buffer, 0, buffer.Length); int readBytes = source.Read(buffer, 0, buffer.Length); if (readBytes == 0) if (readBytes == 0) break; break; destination.Write(buffer, 0, readBytes); destination.Write(buffer, 0, readBytes); } }} 24 automatically closes the stream using automatically closes the stream

Copying a File Live Demo 25

Memory Stream 26

27 Reading In-Memory String – Example string text = "In-memory text."; byte[] bytes = Encoding.UTF8.GetBytes(text); using (var memoryStream = new MemoryStream(bytes)) { while (true) while (true) { int readByte = memoryStream.ReadByte(); int readByte = memoryStream.ReadByte(); if (readByte == -1) if (readByte == -1) { break; break; } Console.WriteLine((char) readByte); Console.WriteLine((char) readByte); }}

Memory Stream Live Demo

Network Stream 29

30 Simple Web Server – Example var tcpListener = new TcpListener(IPAddress.Any, PortNumber); tcpListener.Start(); Console.WriteLine("Listening on port {0}...", PortNumber); while (true) { using (NetworkStream stream = tcpListener.AcceptTcpClient().GetStream()) using (NetworkStream stream = tcpListener.AcceptTcpClient().GetStream()) { byte[] request = new byte[4096]; byte[] request = new byte[4096]; stream.Read(request, 0, 4096); stream.Read(request, 0, 4096); Console.WriteLine(Encoding.UTF8.GetString(request)); Console.WriteLine(Encoding.UTF8.GetString(request)); string html = string.Format("{0}{1}{2}{3} - {4}{2}{1}{0}", string html = string.Format("{0}{1}{2}{3} - {4}{2}{1}{0}", " ", " ", " ", "Welcome to my awesome site!", DateTime.Now); " ", " ", " ", "Welcome to my awesome site!", DateTime.Now); byte[] htmlBytes = Encoding.UTF8.GetBytes(html); byte[] htmlBytes = Encoding.UTF8.GetBytes(html); stream.Write(htmlBytes, 0, htmlBytes.Length); stream.Write(htmlBytes, 0, htmlBytes.Length); }} Gets the stream Reads request Writes response

Network Stream Live Demo

Readers and Writers 32 StreamReader, Binaryreader, StreamWriter, BinaryWriter

33  Readers and writers are classes which facilitate the work with streams  Two types  Text readers/writers – StreamReader / StreamWriter  Provide methods.ReadLine(),.WriteLine() (similar to working with Console.* )  Binary readers/writers – BinaryReader / BinaryWriter  Provide methods for working with primitive types –.ReadInt32(),.ReadBoolean(), WriteChar(), etc. Readers and Writers

34  Read and display text file line by line using StreamReader Reading From File StreamReader reader = new StreamReader("somefile.txt"); using (reader) { int lineNumber = 0; int lineNumber = 0; string line = reader.ReadLine(); string line = reader.ReadLine(); while (line != null) while (line != null) { lineNumber++; lineNumber++; Console.WriteLine("Line {0}: {1}", lineNumber, line); Console.WriteLine("Line {0}: {1}", lineNumber, line); line = reader.ReadLine(); line = reader.ReadLine(); }}

35 Writing Reversed Text to File – Example using (var reader = new StreamReader("../../Program.cs")) { using (var writer = new StreamWriter("../../reversed.txt")) using (var writer = new StreamWriter("../../reversed.txt")) { string line = reader.ReadLine(); string line = reader.ReadLine(); while (line != null) while (line != null) { for (int i = line.Length - 1; i >= 0; i--) for (int i = line.Length - 1; i >= 0; i--) { writer.Write(line[i]); writer.Write(line[i]); } writer.WriteLine(); writer.WriteLine(); line = reader.ReadLine(); line = reader.ReadLine(); } }}

36 Live Demo Readers and Writers

37 Live Demo Fixing Movie Subtitles

Exercises in Class

39 .NET supports special streams  Work just like normal streams, but provide additional functionality  E.g. CryptoStream encrypts when writing, decrypts when reading  GzipStream compresses/decompresses data  PipedStream allows reading/writing data across multiple processes Other Streams Input Stream Output Stream

Other Streams Live Demo

File Class in.NET Easily Working With Files 41

42  File is a static class that provides methods for quick and easy manipulation of files  ReadAllText() / WriteAllText() – reads/writes everything at once  Move() – moves a file to the specified destination  Create() – creates a new file and opens a FileStream to it  Delete() – deletes an existing file  Exists() – checks if such a file exists File Class in.NET

43 Working With Files – Example string text = File.ReadAllText(FilePath); Console.WriteLine(text); File.WriteAllText("../../new.txt", "New line"); bool fileExists = File.Exists("../../Program.cs"); Console.WriteLine(fileExists); var fileStream = File.Create("temp.bin"); fileStream.Close(); File.Move("temp.bin", "renamed.bin"); File.Delete("renamed.bin");

44 Working With Directories And Files – Example var info = new FileInfo("../../Program.cs"); Console.WriteLine( "Name: {0}, Extension: {1}, Size: {2}b, Last Accessed: {3}", "Name: {0}, Extension: {1}, Size: {2}b, Last Accessed: {3}", info.Name, info.Extension, info.Length, info.LastAccessTime); info.Name, info.Extension, info.Length, info.LastAccessTime); string[] files = Directory.GetFiles(Directory.GetCurrentDirectory()); foreach (var file in files) { Console.WriteLine(file); Console.WriteLine(file);} string path = Environment.GetFolderPath( Environment.SpecialFolder.Desktop); Environment.SpecialFolder.Desktop);Console.WriteLine(path);

Summary  Streams are ordered sequences of bytes  Serve as I/O mechanisms  Can be read or written to (or both)  Can have any nature – file, network, memory, device, etc.  Reader and writers facilitate the work with streams by providing additional functionality (e.g. reading entire lines at once)  Always close streams by putting using(…) or try-finally 45

? ? ? ? ? ? ? ? ? Strings and Text Processing

License  This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International" licenseCreative Commons Attribution- NonCommercial-ShareAlike 4.0 International  Attribution: this work may contain portions from  "Fundamentals of Computer Programming with C#" book by Svetlin Nakov & Co. under CC-BY-SA licenseFundamentals of Computer Programming with C#CC-BY-SA  "C# Part I" course by Telerik Academy under CC-BY-NC-SA licenseC# Part ICC-BY-NC-SA  "C# Part II" course by Telerik Academy under CC-BY-NC-SA licenseC# Part IICC-BY-NC-SA 47

Free Software University  Software University Foundation – softuni.orgsoftuni.org  Software University – High-Quality Education, Profession and Job for Software Developers  softuni.bg softuni.bg  Software Facebook  facebook.com/SoftwareUniversity facebook.com/SoftwareUniversity  Software YouTube  youtube.com/SoftwareUniversity youtube.com/SoftwareUniversity  Software University Forums – forum.softuni.bgforum.softuni.bg