1. 바이너리 파일로 저장하고 읽어오는 코드입니다.
여러 타입을 저장할 수 있는데 읽어올 때 반드시 저장된 순서대로 읽어줘야 됩니다.
(문자열은 앞에 문자열의 길이 + 문자열이 저장되어 해당 길이만큼 읽어옵니다.)
using System;
using System.IO; //...Stream
namespace ConsoleApp
{
class Program
{
public static void Main(string[] args)
{
//바이너리 파일 생성 및 저장
FileStream fs = new FileStream("Test.bin", FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
string input1 = Console.ReadLine();
int input2 = Convert.ToInt32(Console.ReadLine());
float input3 = Convert.ToSingle(Console.ReadLine());
bw.Write(input1); //string
bw.Write(input2); //int
bw.Write(input3); //float
bw.Close();
fs.Close();
//바이너리 파일 읽어오기
FileStream fs2 = new FileStream("Test.bin", FileMode.Open);
BinaryReader br = new BinaryReader(fs2);
Console.WriteLine(br.ReadString()); //string
Console.WriteLine(br.ReadInt32()); //int
Console.WriteLine(br.ReadSingle()); //float
br.Close();
fs2.Close();
}
}
}


2. StreamReader/StreamWriter 를 이용한 모습입니다. 문자열 그대로 저장이 됩니다.
using System;
using System.IO; //...Stream
namespace ConsoleApp
{
class Program
{
public static void Main(string[] args)
{
StreamWriter sw = new StreamWriter("Test.dat");
for (int i = 0; i < 5; ++i) //5개의 입력
{
sw.WriteLine(Console.ReadLine());
}
sw.Close();
StreamReader sr = new StreamReader("Test.dat");
while (!sr.EndOfStream) //sr.ReadLine() == null인 경우입니다.
{
Console.WriteLine(sr.ReadLine());
}
sr.Close();
}
}
}


보안적인 측면은 바이너리 코드가 읽기가 어려워지기 때문에 더 좋습니다.
아니면 암호화나 해시를 하는 방법을!
'C# > 문법' 카테고리의 다른 글
[C#] IComparer 정렬 (클래스, 구조체 정렬) (0) | 2023.10.24 |
---|---|
[C#] 출력 형식 ToString("C D N F E X") (+2진수 8진수 16진수) (0) | 2022.10.10 |
[C#] 인덱서 Indexer (0) | 2022.07.11 |
[C#] Serialization.Formatters.Binary (오브젝트 저장, 불러오기) (0) | 2022.05.07 |
[C#] ? : Nullable Type (0) | 2022.04.24 |