๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
C#/C# TIP

C#์˜ ์ž…์ถœ๋ ฅ(IO) - 3

by GREEN๋‚˜๋ฌด 2025. 6. 23.
728x90

 

๐Ÿ”„ 1. Binary ์ž…์ถœ๋ ฅ (์ด๋ฏธ์ง€, ์ˆซ์ž, ์ด์ง„ ๋ฐ์ดํ„ฐ ์ €์žฅ)

โœ”๏ธ BinaryWriter, BinaryReader๋ฅผ ํ™œ์šฉํ•œ ์ˆซ์ž ์ €์žฅ

using System.IO;

// ์ˆซ์ž ์ €์žฅ
using (BinaryWriter writer = new BinaryWriter(File.Open("number.dat", FileMode.Create)))
{
    writer.Write(123);         // int
    writer.Write(3.14);        // double
    writer.Write("Hello");     // string
}
// ์ˆซ์ž ์ฝ๊ธฐ
using (BinaryReader reader = new BinaryReader(File.Open("number.dat", FileMode.Open)))
{
    int num = reader.ReadInt32();
    double d = reader.ReadDouble();
    string text = reader.ReadString();

    Console.WriteLine($"์ฝ์€ ๊ฐ’: {num}, {d}, {text}");
}

โœ”๏ธ ์ด๋ฏธ์ง€ ๋“ฑ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ๋ณต์‚ฌ (raw byte ์ฒ˜๋ฆฌ)

string source = "input.jpg";
string target = "copy.jpg";

byte[] data = File.ReadAllBytes(source);
File.WriteAllBytes(target, data);

Console.WriteLine("์ด๋ฏธ์ง€ ํŒŒ์ผ ๋ณต์‚ฌ ์™„๋ฃŒ");

๐Ÿ“‚ 2. ๋””๋ ‰ํ† ๋ฆฌ ๊ด€๋ฆฌ (Directory ํด๋ž˜์Šค)

โœ”๏ธ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ

string folderPath = "myFolder";
if (!Directory.Exists(folderPath))
{
    Directory.CreateDirectory(folderPath);
    Console.WriteLine("ํด๋” ์ƒ์„ฑ ์™„๋ฃŒ");
}

โœ”๏ธ ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ

string path = "."; // ํ˜„์žฌ ํด๋”

string[] files = Directory.GetFiles(path);
string[] dirs = Directory.GetDirectories(path);

Console.WriteLine("๐Ÿ“„ ํŒŒ์ผ ๋ชฉ๋ก:");
foreach (var file in files)
    Console.WriteLine(file);

Console.WriteLine("\n๐Ÿ“ ๋””๋ ‰ํ† ๋ฆฌ ๋ชฉ๋ก:");
foreach (var dir in dirs)
    Console.WriteLine(dir);

โœ”๏ธ ํด๋” ์‚ญ์ œ (์ฃผ์˜: ์žฌ๊ท€ ์‚ญ์ œ ํฌํ•จ)

Directory.Delete("myFolder", recursive: true);
Console.WriteLine("ํด๋” ์‚ญ์ œ ์™„๋ฃŒ");

๐Ÿงช 3. JSON/XML ์ž…์ถœ๋ ฅ

โœ”๏ธ JSON ์ž…์ถœ๋ ฅ (System.Text.Json)

using System.Text.Json;

// ์ €์žฅํ•  ๊ฐ์ฒด
var user = new { Name = "ํ™๊ธธ๋™", Age = 30 };

// JSON ๋ฌธ์ž์—ด๋กœ ์ €์žฅ
string json = JsonSerializer.Serialize(user);
File.WriteAllText("user.json", json);
// JSON ํŒŒ์ผ ์ฝ๊ธฐ
string jsonFromFile = File.ReadAllText("user.json");
var readUser = JsonSerializer.Deserialize<Dictionary<string, object>>(jsonFromFile);

Console.WriteLine($"์ด๋ฆ„: {readUser["Name"]}, ๋‚˜์ด: {readUser["Age"]}");

โœ”๏ธ XML ์ž…์ถœ๋ ฅ (System.Xml)

using System.Xml;

XmlDocument doc = new XmlDocument();

// XML ๋ฌธ์ž์—ด ์ƒ์„ฑ
doc.LoadXml("<user><name>ํ™๊ธธ๋™</name><age>30</age></user>");
doc.Save("user.xml");
// XML ์ฝ๊ธฐ
XmlDocument readDoc = new XmlDocument();
readDoc.Load("user.xml");

string name = readDoc.SelectSingleNode("/user/name").InnerText;
string age = readDoc.SelectSingleNode("/user/age").InnerText;

Console.WriteLine($"์ด๋ฆ„: {name}, ๋‚˜์ด: {age}");

โœ… +

1. JSON ์ง๋ ฌํ™” ๋Œ€์ƒ์€ ๊ผญ ํด๋ž˜์Šค์—ฌ์•ผ ํ•˜๋‚˜์š”?

์•„๋‹ˆ์š”. ์ต๋ช… ๊ฐ์ฒด๋‚˜ Dictionary<string, object>๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, class๋กœ ์ •์˜ํ•˜๋ฉด ๋” ์ •ํ˜•ํ™”๋œ ์ฒ˜๋ฆฌ์™€ ์œ ์ง€๋ณด์ˆ˜์— ์œ ๋ฆฌํ•จ.

 

2. XML์„ ํด๋ž˜์Šค๋กœ deserialize ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๊ฐ€๋Šฅํ•จ. XmlSerializer๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด XML ↔ ๊ฐ์ฒด ๋งคํ•‘์„ ํ•  ์ˆ˜ ์žˆ์Œ. ์˜ˆ์ œ ์š”์ฒญ ์‹œ ๋ณ„๋„ ์ž‘์„ฑํ•ด์ค„๊ฒŒ.

 

3. ๋Œ€์šฉ๋Ÿ‰ ์ด๋ฏธ์ง€๋‚˜ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ฃผ์˜์ ์€?

FileStream์œผ๋กœ chunk ๋‹จ์œ„๋กœ ์ฝ๊ณ  ์“ฐ๋Š” ๋ฐฉ์‹์ด ํšจ์œจ์ ์ž„. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ ๊ถŒ์žฅ.