0% found this document useful (0 votes)
7 views

C# Saving Data and Objects Into Files

This document provides an overview of saving data and objects in C# using various methods including text files, JSON, XML, and binary serialization. It includes code examples for writing and reading files, as well as serializing and deserializing objects, including private fields. The document also discusses the use of streams for file operations and custom serialization logic.

Uploaded by

tobewof789
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

C# Saving Data and Objects Into Files

This document provides an overview of saving data and objects in C# using various methods including text files, JSON, XML, and binary serialization. It includes code examples for writing and reading files, as well as serializing and deserializing objects, including private fields. The document also discusses the use of streams for file operations and custom serialization logic.

Uploaded by

tobewof789
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

C#: Saving Data and Objects into Files

1. Introduction
In C#, saving data and objects to files is a common requirement for applications that need to persist information. This document covers various
methods such as text files, JSON, XML, and binary serialization/deserialization.

2. Writing and Reading Text Files


2.1 Writing to a Text File
using System;
using System.IO;

class Program
{
static void Main()
{
string filePath = "data.txt";
string content = "Hello, this is a text file!";
File.WriteAllText(filePath, content);
}
}
2.2 Reading from a Text File
string readContent = File.ReadAllText("data.txt");
Console.WriteLine(readContent);

2.3 Writing Multiple Lines to a Text File


File.WriteAllLines("data.txt", new string[] {"Line1", "Line2", "Line3"});

2.4 Reading Multiple Lines


string[] lines = File.ReadAllLines("data.txt");
foreach (string line in lines)
{
Console.WriteLine(line);
}

3. JSON Serialization and Deserialization


3.1 Using System.Text.Json
using System;
using System.Text.Json;
using System.IO;
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

class Program
{
static void Main()
{
Person person = new Person { Name = "John", Age = 30 };
string json = JsonSerializer.Serialize(person);
File.WriteAllText("person.json", json);
}
}

3.2 Deserialization from JSON


string jsonData = File.ReadAllText("person.json");
Person person = JsonSerializer.Deserialize<Person>(jsonData);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");

4. Binary Serialization and Deserialization


4.1 Writing Binary Data
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

class Program
{
static void Main()
{
Person person = new Person { Name = "Alice", Age = 25 };
using (FileStream fs = new FileStream("person.dat", FileMode.Create))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, person);
}
}
}

4.2 Reading Binary Data


using (FileStream fs = new FileStream("person.dat", FileMode.Open))
{
BinaryFormatter formatter = new BinaryFormatter();
Person person = (Person)formatter.Deserialize(fs);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
5. XML Serialization and Deserialization
5.1 XML Serialization
using System;
using System.IO;
using System.Xml.Serialization;

[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

class Program
{
static void Main()
{
Person person = new Person { Name = "Emma", Age = 22 };
XmlSerializer serializer = new XmlSerializer(typeof(Person));
using (TextWriter writer = new StreamWriter("person.xml"))
{
serializer.Serialize(writer, person);
}
}
}

5.2 XML Deserialization


XmlSerializer serializer = new XmlSerializer(typeof(Person));
using (TextReader reader = new StreamReader("person.xml"))
{
Person person = (Person)serializer.Deserialize(reader);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}

6. Using Streams for File Operations


6.1 Writing with StreamWriter
using (StreamWriter writer = new StreamWriter("stream.txt"))
{
writer.WriteLine("This is a line of text.");
}

6.2 Reading with StreamReader


using (StreamReader reader = new StreamReader("stream.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
7. Serializing Private Fields
In C#, private fields are not serialized by default. To include them in serialization, use [JsonInclude] for JSON or implement custom serialization
logic for binary serialization.

7.1 Serializing Private Fields in JSON


using System;
using System.Text.Json;
using System.Text.Json.Serialization;

class Person
{
[JsonInclude]
private string Secret = "This is a secret";
public string Name { get; set; }
public int Age { get; set; }
}

class Program
{
static void Main()
{
Person person = new Person { Name = "John", Age = 30 };
string json = JsonSerializer.Serialize(person, new JsonSerializerOptions { IncludeFields = true });
Console.WriteLine(json);
}
}

7.2 Serializing Private Fields in Binary Serialization


using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
class Person : ISerializable
{
private string Secret = "Hidden Info";
public string Name { get; set; }
public int Age { get; set; }

public Person() { }

public Person(SerializationInfo info, StreamingContext context)


{
Name = info.GetString("Name");
Age = info.GetInt32("Age");
Secret = info.GetString("Secret");
}

public void GetObjectData(SerializationInfo info, StreamingContext context)


{
info.AddValue("Name", Name);
info.AddValue("Age", Age);
info.AddValue("Secret", Secret);
}
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy