728x90
반응형
바이너리 파일을 읽고 쓰는 소스입니다.
바이너리 파일은 확장자를 .bin으로 해야 합니다.
1. 소스
1.1 네임스페이스
네임스페이스 |
using System.Runtime.Serialization.Formatters.Binary; using System.IO; using System; |
1.2 메서드
메서드 : 바이너리 쓰기 |
public void WriteBinary(string filePath, BinaryData binaryData) { DirectoryInfo directoryInfo = new DirectoryInfo(Path.GetDirectoryName(filePath)); if (!directoryInfo.Exists) { directoryInfo.Create(); } BinaryFormatter binaryFormatter = new BinaryFormatter(); FileStream fileStream = File.Open(filePath, FileMode.OpenOrCreate); binaryFormatter.Serialize(fileStream, binaryData); fileStream.Close(); } |
메서드 : 바이너리 읽기 |
public T ReadBinary <T>(string filePath) { BinaryFormatter binaryFormatter = new BinaryFormatter(); FileStream fileStream = File.Open(filePath, FileMode.Open); if (fileStream != null && fileStream.Length > 0) return (T)binaryFormatter.Deserialize(fileStream); else { Debug.Log("바이너리 파일을 확인해 보세요!!"); return default(T); } } |
2. 데모
using UnityEngine;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using System;
[Serializable]
public struct BinaryData
{
public string stringData;
public bool boolData;
public int intData;
public float floatData;
};
public class DemoBinaryFile : MonoBehaviour
{
public BinaryData m_WriteData;
public BinaryData m_ReadData;
void Update()
{
if (Input.GetKeyDown(KeyCode.W))
{
string filePath = Path.Combine(Application.streamingAssetsPath, "Example.bin");
// 바이너리파일은 확장자가 bin으로 해야 합니다.
m_WriteData = new BinaryData();
m_WriteData.stringData = "Coderzero";
m_WriteData.boolData = false;
m_WriteData.intData = 12;
m_WriteData.floatData = 3.45f;
WriteBinary(filePath, m_WriteData);
}
if (Input.GetKeyDown(KeyCode.R))
{
string filePath = Path.Combine(Application.streamingAssetsPath, "Example.bin");
// 바이너리파일은 확장자가 bin으로 해야 합니다.
m_ReadData = (BinaryData)ReadBinary<BinaryData>(filePath);
Debug.Log(m_ReadData.stringData);
}
}
public void WriteBinary(string filePath, BinaryData binaryData)
{
DirectoryInfo directoryInfo = new DirectoryInfo(Path.GetDirectoryName(filePath));
if (!directoryInfo.Exists)
{
directoryInfo.Create();
}
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream fileStream = File.Open(filePath, FileMode.OpenOrCreate);
binaryFormatter.Serialize(fileStream, binaryData);
fileStream.Close();
}
public T ReadBinary <T>(string filePath)
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
FileStream fileStream = File.Open(filePath, FileMode.Open);
if (fileStream != null && fileStream.Length > 0)
return (T)binaryFormatter.Deserialize(fileStream);
else
{
Debug.Log("바이너리 파일을 확인해 보세요!!");
return default(T);
}
}
}
728x90
반응형
'프로그램 > 유니티 스크립트 소스' 카테고리의 다른 글
[유니티 스크립트 소스] csv 파일 읽고 쓰기 (0) | 2020.02.21 |
---|---|
[유니티 스크립트 소스] ini 파일 읽고 쓰기 (0) | 2020.02.21 |
[유니티 스크립트 소스] 텍스트(txt) 파일 읽고 쓰기 (0) | 2020.02.21 |
[유니티 스크립트 소스] 휴대용 카메라 (0) | 2020.02.21 |
[유니티 스크립트 소스] 지형 오브젝트를 부드럽게 따라다니는 오브젝트(카메라) (0) | 2020.02.19 |