데이터 저장 (Write to Binary File):
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
Person[] peopleToSave = {
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 35 }
};
string filePath = "data.dat";
// 데이터를 이진 파일에 저장
using (FileStream fs = new FileStream(filePath, FileMode.Create))
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, peopleToSave);
}
Console.WriteLine("Data saved to binary file.");
}
}
데이터 로드 (Read from Binary File):
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
string filePath = "data.dat";
// 이진 파일에서 데이터 로드
using (FileStream fs = new FileStream(filePath, FileMode.Open))
{
BinaryFormatter bf = new BinaryFormatter();
Person[] loadedPeople = (Person[])bf.Deserialize(fs);
foreach (Person person in loadedPeople)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
}
}
위의 예제는 텍스트 파일 및 이진 파일에 데이터를 저장하고 로드하는 가장 기본적인 방법입니다. 파일 경로 및 데이터 형식을 프로젝트에 맞게 수정하여 사용할 수 있습니다.
이진 파일에 데이터를 저장하고 로드하는 C# 예제에서 파일의 경로를 절대 경로로 수정한 코드를 보여드리겠습니다. 절대 경로를 사용하려면 파일이 저장될 정확한 경로를 지정해야 합니다. 아래 예제에서는 C:\MyData 디렉터리에 이진 파일을 저장하고 로드합니다.
csharp
Copy code
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
string dataDirectory = @"C:\MyData"; // 원하는 경로로 수정
// 데이터 저장
string filePath = Path.Combine(dataDirectory, "data.bin");
SaveDataToFile(filePath);
// 데이터 로드
Person loadedPerson = LoadDataFromFile(filePath);
if (loadedPerson != null)
{
Console.WriteLine("Loaded Person:");
Console.WriteLine($"Name: {loadedPerson.Name}, Age: {loadedPerson.Age}");
}
else
{
Console.WriteLine("Error loading data from file.");
}
}
static void SaveDataToFile(string filePath)
{
Person personToSave = new Person
{
Name = "Alice",
Age = 30
};
try
{
Directory.CreateDirectory(Path.GetDirectoryName(filePath));
using (FileStream fs = new FileStream(filePath, FileMode.Create))
{
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, personToSave);
Console.WriteLine("Data saved to binary file.");
}
}
catch (Exception ex)
{
Console.WriteLine("Error saving data to file: " + ex.Message);
}
}
static Person LoadDataFromFile(string filePath)
{
try
{
if (File.Exists(filePath))
{
using (FileStream fs = new FileStream(filePath, FileMode.Open))
{
IFormatter formatter = new BinaryFormatter();
Person loadedPerson = (Person)formatter.Deserialize(fs);
return loadedPerson;
}
}
else
{
Console.WriteLine("File does not exist.");
return null;
}
}
catch (Exception ex)
{
Console.WriteLine("Error loading data from file: " + ex.Message);
return null;
}
}
}
위 코드에서 dataDirectory 변수를 원하는 절대 경로로 수정하고, filePath를 생성할 때 이 디렉터리와 파일 이름을 조합하여 파일의 경로를 정확하게 지정합니다. 이렇게 수정한 코드를 사용하면 원하는 경로에 이진 파일을 저장하고 로드할 수 있습니다.
이진 파일을 수정하려면 해당 파일의 내용을 읽어서 수정하고, 수정된 내용을 파일에 다시 쓰는 작업을 수행해야 합니다. 아래는 이진 파일을 수정하는 예제입니다. 파일 경로를 절대 경로로 수정하여 사용하세요.
using System;
using System.IO;
class Program
{
static void Main()
{
// 이진 파일의 경로 (절대 경로로 수정)
string filePath = @"C:\Path\To\Your\BinaryFile.bin";
// 이진 파일 읽기
byte[] fileBytes;
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
fileBytes = new byte[fs.Length];
fs.Read(fileBytes, 0, (int)fs.Length);
}
// 수정할 내용을 찾고 수정
byte[] searchTextBytes = Encoding.UTF8.GetBytes("OldTextToReplace");
byte[] replaceTextBytes = Encoding.UTF8.GetBytes("NewText");
for (int i = 0; i < fileBytes.Length - searchTextBytes.Length; i++)
{
bool found = true;
for (int j = 0; j < searchTextBytes.Length; j++)
{
if (fileBytes[i + j] != searchTextBytes[j])
{
found = false;
break;
}
}
if (found)
{
// "OldTextToReplace"를 "NewText"로 바꾸기
for (int j = 0; j < searchTextBytes.Length; j++)
{
fileBytes[i + j] = replaceTextBytes[j];
}
}
}
// 수정된 내용을 이진 파일에 쓰기
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Write))
{
fs.Write(fileBytes, 0, fileBytes.Length);
}
Console.WriteLine("이진 파일이 수정되었습니다.");
}
}
이 코드는 지정된 이진 파일에서 "OldTextToReplace"라는 내용을 "NewText"로 수정한 후, 수정된 내용을 파일에 다시 씁니다. 파일 경로를 수정하여 사용하십시오.
BinaryFormatter (0) | 2023.09.06 |
---|---|
StreamWriter 와 FileStream 그리고 BinaryWriter (0) | 2023.09.06 |
텍스트 파일에 저장및 로드 (0) | 2023.09.05 |
Entity Framework (0) | 2023.09.05 |
LINQ 쿼리 (0) | 2023.09.05 |