File Stream in C#
Random-Access File
The records in random-access file can be accessed directly and quickly
without searching through a large number of records as in the case of
sequential-access file. Random-access file is used in instant access
systems such as banking system, sale system, air-line reservation
system, etc.
Writing to and reading from a random-access file
In the example below, we write information of students to a file and read
from it. Each
information of a student are stored in a Student object generated from a
Student class. The information of every student contains student number
and student name. To write to and read from an random-access file, you
can use BinaryWriter class and BinaryReader class. In the random-access
file, you can specify the location to write data in or read data from
using the position property of the FileStream class.
Example:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
public static int pos=0;
static void Main(string[] args)
{
readFromFile("D:\\student.txt");
addrecord();
}
class Student
{
private string stnumber;
private string stname;
private int recordsize;
public string stunumber
{ //stunumber property
set { stnumber = value; }
get { return stnumber; }
}
public string stuname
{ //stuname property
set { stname = value; }
get { return stname; }
}
public int size
{
get { return calsize(); }
}
private int calsize()
{
recordsize = 2 * 15 + 2 * 20;// max record size
return recordsize;
}
}
static void addrecord(){
Student stu=new Student();
String con = "y";
while (con != "n")
{
Console.Write("Enter student number:");
stu.stunumber = Console.ReadLine();
Console.Write("Enter student name:");
stu.stuname = Console.ReadLine();
pos+= 1; //update position
writeToFile("D:\\Student.txt", stu, pos, stu.size);
Console.WriteLine("Continue?y/n:");
con=Console.ReadLine();
}
}
static void writeToFile(string filename, Student obj, int pos, int
size){
FileStream fout;
BinaryWriter bw;
//create a file stream object
fout = new FileStream(filename, FileMode.Append , FileAccess.Write);
//create a binary writer object
bw = new BinaryWriter(fout);
//set file position where to write data
fout.Position = pos * size;
//write data
bw.Write(obj.stunumber );
bw.Write(obj.stuname );
//close objects
bw.Close();
fout.Close();
}
static void readFromFile(string filename){
FileStream fn;
BinaryReader br;
Student stu=new Student();
int currentrecord=0;
//open file to read data
fn = new FileStream(filename, FileMode.Open , FileAccess.Read);
br = new BinaryReader(fn);
//read next record
int i;
for(i=1; i<=(int)(fn.Length)/stu.size;i++){
currentrecord += 1; //update currentrecord position
fn.Seek(currentrecord * stu.size, 0);
stu.stunumber = br.ReadString().ToString() ;
stu.stuname = br.ReadString().ToString() ;
Console.WriteLine(stu.stunumber +"\t"+stu.stuname );
}
//update pos to the current position
pos = currentrecord;
//close objects
br.Close();
fn.Close();
}
}
}
|
|
-
Why and How to learn
- C programming language?
- C++ programming language?
- C# programming language?
- Java programming language?
- Python programming language?
- VB programming language?
|
|
|
 Posted comments | Phan Neth, CICI, year 3: Now it is ok teacher. I can connect to database and select data from it. Than you so much teacher !!!!!
04-30-2013 | Dara: Copy and paste the link below to the address box to learn how to connect C and Mysql server:
http://www.worldbestlearningcenter.com/index_files/cpp-tutorial-connect_mysql_database.htm
04-27-2013 | Phan Neth, CICI, year 3: Hello teacher i want to connect C programming language to MySql server but it have problem. When i compile it always error with library " my_global.h
and mysql.h", so how should i do?
04-27-2013 | Phan Neth, Year 3 at CICI,: I have some problem about connection to mysql server. So I hope teacher can help me. Thank !!!!
04-26-2013 | Federico: Output appears the same also this way:
static void Main(string[] args)
{
int[,] myArray = new int[5, 5];
int row, i;
int n = 1;
for (row = 0; row < 5; row++)
{
for (i = 0; i < 5; i++)
{
myArray[row, i] = n;
if (row == 1 && i == 2) Console.Write(" \t");
else Console.Write("{0} \t", n);
if (n!=26) n++;
if((i+1)%5==0) Console.WriteLine("\n");
}
}
Console.ReadLine();
}
04-13-2013 | Dara: Let pointer p point to the index 1 elem (value=2) of the array.
int *p= a+1;
Let pointer q point to the index 6 elem (value=5) of the array.
int *q= a+6;
-Expression q-p is the subtraction of address of the index 6 element and the address of index 1 elem of the array. So, the result is 5.
-Expression *p+*q is the sum of the value of index 1 elem (2) and the value of index 6 elem (5). So, the result is 7.
In conclusion, the output is 57.
03-28-2013 | Anushka : Find the output of following code
main()
{
int a[] = {1,2,9,8,6,3,5,7,8,9};
int *p= a+1; int *q= a+6;
cout<< q-p <<*p+*q; }
03-28-2013 | Dara: Option Explicit
Dim Cn as New ADODB.Connection
Private Sub_Form_Load()
Cn.Open "Provider=SQLOLEDB; Data Source=ServerName; Initial Catalog=DatabaseName;UserID=UserName; Password=Passw"
End Sub
You will need to replace ServerName with the name of your server (installed SQL Server), DatabaseName withe the name of your data file that you want to connect to, UserName with the name of the user to login to SQL Server, and Passw with the password used to login to SQL Server.
03-13-2013 | More>>> |
|
| .................................................................................................................... | Home | Forum | About | Contact | | | This website intents to provide free and high quality tutorials, examples, exercises and solutions, questions and answers of programming and scripting languages: C, C++, C#, Java, VB.NET, Python, VBA,PHP & Mysql, SQL, JSP, ASP.NET,HTML, CSS, JQuery, JavaScript and other applications such as MS Excel, MS Access, and MS Word. However, we don't guarantee all things of the web are accurate. If you find any error, please report it then we will take actions to correct it as soon as possible. | | Copyright @ 2011-2013 worldbestlearningcenter. All Rights Reserved. |
|