ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋์ค ํ์ผ ์ ์ฅ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ถ์ด ๋ด๊ฐ ์๋ ์์ค์์ ๊ตฌํ์ ํด๋ณด์๋ค.
ํ์ง๋ง ์ธ์ด๋ธํ ํ์ผ์ ๋ด์ฉ์ ๋ฉ๋ชจ์ฅ์ ์ฏ๊ฒจ์ ๋ฏ์ด ํ๋ํ๋ ๋ณ์๋ค์ ์ ์ฅํ๊ณ , ๋ ๋ถ๋ฌ์์ ์ ์ฉํ๋ ๊ธฐ๋ฅ๊น์ง
์ง์ ํ๋๊ฒ ๊น์ง ํ ๋งํ์ผ๋, ๋ง์ฝ ๋ณ์์ ์ํ๊ฐ ๋ฐฐ์ด๋ก ์ ์ธ๋์๊ฑฐ๋, ํด๋์ค๋ฅผ ์ ์ฅ์์ผ์ผ ํ ๊ฒฝ์ฐ
๊ธฐ์กด์ String์ ์ด์ฉํด ๋ฌธ์์ด๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก๋ ๋์ ํ ๋ฌด๋ฆฌ์์๋ค.
๊ทธ๋์ ์ฐพ์๋ณด์๋๋ฐ ๋ฌด๋ ค ํด๋์คํ์ผ ์์ฒด๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฌ์ฌ์ ์๊ฒ ๋์์ฃผ๋ Serialization(์ง๋ ฌํ) ์ด๋ผ๋ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์๊ฒ๋์๋ค.
์ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐํด๋ณด๊ฒ ๋ค.
๊ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ํ ๋ ์ ์ฉํ๊ฒ ๋ค๋ฉด
์บ๋ฆญํฐ ์ฒด๋ ฅ
์บ๋ฆญํฐ ๋ ๋ฒจ
์บ๋ฆญํฐ ์ด๋ฆ
๋ฑ์ ์ ์ฅํด์ผ ํ๋ค๊ณ ํ๋ค.
๋ง์ฝ ์ด๊ฒ๋ค์ด ์ฑ ์ ์ ํ์ ธ์๋ค๋ฉด
์ฐํ์ ๊บผ๋ธ๋ค
์ฑ ์์๋ ๊ฒ๋ค์ ์ข ์ด์ ๋ฒ ๊ปด์ด๋ค
์ข ์ด๋ฅผ ๋ณด๊ดํ๋ค
๋ถ๋ฌ์ค๋ คํ๋ค๋ฉด
์ฐํ์ ๊บผ๋ธ๋ค
์ข ์ด๋ฅผ ๊ฐ์ ธ์จ๋ค
์ข ์ด์์๋ ๊ฒ๋ค์ ์ฑ ์ ๋ฒ ๊ปด์ด๋ค.
์ด๋ ๊ฒ ๋จ์ํ ์๊ณ ๋ฆฌ์ฆ์ด ์์ฑ๋๋ค.
๋ฐ๋ก ์คํํด๋ณด์!
์ผ๋จ ๊ฒ์์์ ์ฌ์ฉํ๋ ๋ณ์๋ฅผ ์ ์ธ ํด์ฃผ์
//๊ฒ์ํด๋์ค์ ์กด์ฌํ๋ ๋ณ์๋ค
class Game
{
int iHealth
int iLevel
string stName
static void Main(string[] args)
{
}
}
์๊น ํด๋์ค์์ฒด๋ฅผ ์ ์ฅํด์ผ ํ๋ค๊ณ ํ๋
์์์๋ ๊ฒ์ ํด๋์ค๋ฅผ ๊ทธ๋๋ก ์ ์ฅํ๊ณ ์ถ์ง๋ง, ๊ทธ๊ฒ๋ณด๋ค๋ ๊ตฌ์กฐ์ฒด ํ์์ ํด๋์ค๋ฅผ ๋ฐ๋ก ์ ์ธํด์ค์
์ ์ฅํ๊ณ ์ถ์ํญ๋ชฉ๋ง ์ ์ฅํ๊ฒ ๋ง๋ค๋๋ก ํ๋ ๊ฒ์ด ์ข๋ค.
//์ ์ฅ์ฉ ํด๋์ค ์์ฑ
class SerializableDataField
{
public int isHealth
public int isLevel
public string stsName
}
์ด์ ์ ์ฅ์ฉํด๋์ค๋ฅผ ๋ง๋ค์์ผ๋ ๋ฐ๋ก ๊ธฐ๋ฅ๊ตฌํ์ ํด๋ณด๊ฒ ๋ค
//๊ฒ์ํด๋์ค์์ ์ ์ฅ๊ธฐ๋ฅ ๊ตฌํ
class Game
{
int iHealth
int iLevel
string stName
static void Main(string[] args)
{
}
void SaveData()
{
//ํ์ผ๊ด๋ฆฌ์ฉ ํด๋์ค๋ค ํธ์ถ!!
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream("C:\\ํ์ผ๊ฒฝ๋ก\\ํ์ผ์ด๋ฆ.ํ์ฅ๋ช
",FileMode.Create);
SerializableDataField filesaver = new SerializableDataField();
//์๊น ๋ง๋ ๊ทธ ์ ์ฅ์ฉ ํด๋์ค๋ฅผ ํธ์ถํ๋ค
//์ ์ฅํ ๋ณ์๋ค์ ์ ์ฅ์ฉํด๋์ค์ ๋ค์ ธ๋ฒ๋ฆฐ๋ค!
filesaver.isHealth = iHealth;
filesaver.isLevel = iLevel;
filesaver.stsName = stName;
//์ ์ฅ์์!
bf.Serialize(fs, filesaver);
fs.Close();
}
}
BinaryFormatter ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ํ์ผ์ง๋ ฌํ์ ์ฌ์ฉํ๋ ๋ ์์ด๊ณ FileStream ์ผ๋ก ์์น์ ์ ๊ณผ ์ฌ์ฉํ ๊ธฐ๋ฅ์ ์ ์ฉํ๋ฉด ๋๋ค.
์ด๋ ๊ฒ SaveData()ํจ์๋ฅผ ์คํํ๋ฉด
์๊น๋ง๋ SerializableDataField๋ผ๋ ์ ์ฅ์ฉํด๋์ค๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐ๊ณ ํ์ผ๋ก ๋ง๋ค์ด๋ฒ๋ฆฌ๋ ๊ธฐ๋ฅ์ ์ํํ๊ฒ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ถ๋ฌ์ค๋๊ฑด ์ด๋ป๊ฒ ํ ๊น?
์ด๊ฒ๋ ์ ์ฅ์ด๋ ๋ค๋ฅผ๊ฒ ๋ง์ด ์๋ค.
//๊ฒ์ํด๋์ค์์ ๋ถ๋ฌ์ค๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ
class Game
{
int iHealth
int iLevel
string stName
static void Main(string[] args)
{
}
void LoadData()
{
//ํ์ผ๊ด๋ฆฌ์ฉ ํด๋์ค๋ค ํธ์ถ!!
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream("C:\\ํ์ผ๊ฒฝ๋ก\\ํ์ผ์ด๋ฆ.ํ์ฅ๋ช
",FileMode.Open);
//์ฌ๊ธฐ์ ํ์ผ๋ชจ๋๋ฅผ FileMode.Open์ผ๋ก ๋ฐ๊ฟ์ผ ํ๋ค.
SerializableDataField filesaver = new SerializableDataField();
//๋ถ๋ฌ์ฌ๋๋ ๋ฌผ๋ก ์ด์ง๋ง ํด๋์ค ์์ฒด๋ฅผ ์ ์ฅํ์ผ๋ ๋ถ๋ฌ์ฌ๋๋ ํด๋น ํด๋์ค๋ฅผ ํธ์ถํด์ผํ๋ค.
//๋ถ๋ฌ์ค๊ธฐ ์์
filesaver = bf.Deserialize(fs) as SerializableDataField;
fs.Close();
//์ ์ฅ์ฉํด๋์ค์๋ SerializableDataField์ ์ ์ฅํ ๊ฐ๋ค์ ๋ฎ์ฌ์ฐ์ด ๋ถ๋ฌ์์ผ๋
//๊ฒ์ํด๋์ค๊ฐ ์๋๋ค์ด ๊ฐ๊ณ ์๋ ๋ณ์๋ค์ ๋บ์ด์ค๋ฉด ๋๋ค
//๋ณ์ ๋ถ๋ฌ์ค๊ธฐ
iHealth = filesaver.isHealth;
iLevel = filesaver.isLevel;
stName = filesaver.stsName;
}
}
์ด์ ๊น๋ํ๊ฒ ํฉ์ณ๋ฒ๋ฆฌ๊ฒ ๋ค!
class Game
{
int iHealth
int iLevel
string stName
static void Main(string[] args)
{
}
void SaveData()
{
//๋๊ตฌ๊ฐ์ ธ์ค๊ณ
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream("C:\\ํ์ผ๊ฒฝ๋ก\\ํ์ผ์ด๋ฆ.ํ์ฅ๋ช
",FileMode.Create);
SerializableDataField filesaver = new SerializableDataField();
//์ข
์ด์ ๊ธ์๋ฒ ๊ปด์ฐ๊ณ
filesaver.isHealth = iHealth;
filesaver.isLevel = iLevel;
filesaver.stsName = stName;
//๊ทธ์ข
์ด ๋ณด๊ดํ๊ณ
bf.Serialize(fs, filesaver);
fs.Close();
}
void LoadData()
{
//๋๊ตฌ๊ฐ์ ธ์ค๊ณ
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream("C:\\ํ์ผ๊ฒฝ๋ก\\ํ์ผ์ด๋ฆ.ํ์ฅ๋ช
",FileMode.Open);
SerializableDataField filesaver = new SerializableDataField();
//์ข
์ด ๊ฐ์ ธ์ค๊ณ
filesaver = bf.Deserialize(fs) as SerializableDataField;
fs.Close();
//์ข
์ด์์ฐ์ฌ์ง๊ฑฐ ์ฑ
์ ๋ค์ ์ ์ด๋๊ณ
iHealth = filesaver.isHealth;
iLevel = filesaver.isLevel;
stName = filesaver.stsName;
}
}
//์ข
์ด์ญํ
class SerializableDataField
{
public int isHealth
public int isLevel
public string stsName
}
๋ง์ง๋ง ์ฝ๋๋ฌธ์ ๋ณด๋ ํ์คํ ์ดํด๋์ง ์๋๊ฐ?
์๋๋ฉด ๋ง๊ณ ..
์ฌํผ ์ด๋ฐ๋ฐฉ๋ฒ์ ํ์ฉํด
๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์์ฒด๋ฅผ ์ ์ฅํด๋ฒ๋ฆด์๋ ์๋ค. (์ผ๋ง๋ ํธ๋ฆฌํ ๊ธฐ๋ฅ)
๊ทธ๋ฌ๋ ์์ผ๋ก ๋ฉ๋ชจ์ฅ์ฒ๋ผ stringํด๋์ค๋ฅผ ์ด์ฉํด ๋ฌธ์์ด๋ก ์ ์ฅํ์ง๋ง๊ณ
์ฟจํ๊ฒ ํด๋์ค ์์ฒด๋ฅผ ์ ์ฅํด๋ฒ๋ฆฌ์!
'๐ C#' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C#] ์ปจํธ๋กค์ ์ด๋ฆ์ผ๋ก ์ฐพ๊ธฐ Find()๋ฌธ (0) | 2020.05.04 |
---|---|
[C#]Static ํค์๋์ ๋ํด (0) | 2020.03.25 |