내 프로젝트를 저장 전화 번호 목록 <에 바이너리 파일에 ListBox1에 항목을 추가하려고>과 .BIN 파일로 저장하는 경우 : 끝 목록을 <>
private void savebutton_Click(object sender, EventArgs e)
{
SaveFileDialog sv = new SaveFileDialog();
sv.Filter = "Binary files (*.bin)|*.bin|All files(*.*)|*.*";
sv.Title = "Save File";
sv.FilterIndex = 2;
sv.RestoreDirectory = true;
sv.InitialDirectory = Path.GetFullPath(@"F:\Computer Technology Skills\Programming 35\Module 1\ICA10\ICA10\bin\Debug");
if (sv.ShowDialog() == DialogResult.OK)
{
try
{
FileStream fs = new FileStream(sv.FileName, FileMode.Create, FileAccess.Write);
BinaryWriter file = new BinaryWriter(fs);
// System.IO.StreamWriter file = new System.IO.StreamWriter(sv.FileName.ToString());
var message = string.Join(Environment.NewLine, PhoneNum);
file.Write(message);
file.Close();
fs.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
가 그런 부하를 누르면 버튼은 listbox1에있는 항목을 삭제하여 각 줄의 bin 파일에 있던 항목으로 대체합니다.
private void loadbutton_Click(object sender, EventArgs e)
{
OpenFileDialog od = new OpenFileDialog();
string databyte = null;
long iNumInts = 0;
od.RestoreDirectory = true;
od.InitialDirectory = Path.GetFullPath(@"F:\Computer Technology Skills\Programming 35\Module 1\ICA10\ICA10\bin\Debug");
if (od.ShowDialog() == DialogResult.OK)
{
try
{
FileStream fs = new FileStream(od.FileName, FileMode.Open);
listBox1.Items.Clear();
using (BinaryReader reader = new BinaryReader(fs))
{
iNumInts = fs.Length/sizeof(int);
for (int i = 0; i < iNumInts; i++)
{
databyte = reader.ReadString(); //Endofstreamexception
listBox1.Items.Add(databyte);
}
fs.Close();
reader.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
문제는 내가 저장 한 파일을로드 할 때, 항목은 모두에 ListBox1의 첫 번째 인덱스에 붙어과 나는 endofstream 예외가 나타날되어있다.
내 노트가 도움이되지 않아서 혼란 스러웠습니다. 다른 정수 오버플로 질문은 정수 또는 배열을 사용하는 예제였습니다. 나는 streamwriter에서 많은 도움을 준 binarywriter로 바꿨지 만, 어떤 도움이 많이 감사 할 것입니다!
감사합니다. 내가 ints 및 바이트에 대한 이진 리더 및 문자열에 대한 streamreader 유지 같아요. – user7115764