Page 260 고등학교 프로그래밍 교과서
P. 260
2 버튼(btnPrintout) 클릭 이벤트 처리: 파일로부터 자료를 읽어서 리스트 뷰에 출력
한다. 이때 리스트 뷰에 출력되는 항목은 모두 문자열이어야 하므로 ToString( )
메서드를 사용하여 문자열로 변환하였다.
‘%’ 기호는 나머지 연산자로 cnt를 5로 나눈 값이 0이면 cnt는 5의 배수에
해당한다. 즉, 리스트 뷰의 출력되는 행의 개수가 5의 배수가 될 때마다 배경색
을 YellowGreen으로 변경한다.
41 int cnt;
42 string irum = "";
43 ListViewItem item;
44 BinaryReader inStream = new BinaryReader(new FileStream
45 (@"C:\Data\stuScore.txt", FileMode.OpenOrCreate));
46 cnt = 0;
읽기, 쓰기 모드로 파일 오픈
47 while (true)
파일 포인터 이동
48 {
49 inStream.BaseStream.Seek(cnt * recordSize, SeekOrigin.Begin);
50 if (inStream.PeekChar( ) == -1) break;
ReadByte() 51 hak = inStream.ReadByte( );
스트림에서 1byte를 읽는다.
52 ban = inStream.ReadByte( );
53 bunho = inStream.ReadByte( );
ReadString()
54 irum = inStream.ReadString( ) + " ";
스트림에서 문자열을 읽는다. 문자열로 변환하여
55 irum.Substring(0, 6);
새로운 행에 추가
56 item = new ListViewItem(hak.ToString( ));
57 item.SubItems.Add(ban.ToString( ));
58 item.SubItems.Add(bunho.ToString( ));
파일 포인터 이동
59 item.SubItems.Add(irum);
60 inStream.BaseStream.Seek(cnt * recordSize + 20, SeekOrigin.Begin);
61 for (int j = 0; j < 10; j++)
62 {
63 item.SubItems.Add(inStream.ReadByte( ).ToString( ));
64 }
65 inStream.BaseStream.Seek(cnt * recordSize + 30, SeekOrigin.Begin);
ReadInt32() 66 item.SubItems.Add(inStream.ReadInt32( ).ToString( ));
스트림에서 정수형 자료를 읽는다. 67 item.SubItems.Add(inStream.ReadSingle( ).ToString( ));
68 item.SubItems.Add(inStream.ReadByte( ).ToString( ));
ReadSingle()
69 listView1.Items.Add(item);
스트림에서 실수형 자료를 읽는다.
70 cnt++;
71 if (cnt % 5 == 0) 5의 배수에 따라
72 listView1.Items[cnt - 1].BackColor = Color.YellowGreen;
73 }
행의 배경색 변경
74 inStream.Close( );
258 Ⅲ. 프로그래밍 설계와 구현
(책)2015프로그래밍-교과서3차심의본 본문.indb 258 2017-09-05 오후 4:17:10