Read Write Text File in c#, The old fashion storage system.

Name : A simply file read and write in CS.
Topics Covered: File read-write, File size calculation, random functions (different ways).

The problems are :

A. Write a program that will generate 4 types of “printable" random objects and store them in a single file, each object will be separated by a ",".
These are the 4 objects:
1. alphabetical strings
2. real numbers
3. integers
4. alphanumerics.
*The alphanumerics should contain a random number of spaces before and after it (not exceeding 10 spaces).

The output should be 20MB in size.

Sample extracted output :

youruasdifafasd, 127371237, asdfka12348fas,13123.123,
asjdfklasdjfklaasf, 123192u3kjwekhf , 89181811238,122,
jslfhasjdfa900jkifh , 3.781, 2.11, ....


B. Write a program that will read the generated file above and print to the console the object and its type .Spaces before and after the alphanumeric object must be stripped.

Sample output :

youruasdifafasd - alphabetical strings
127371237 - integer
asdfka12348fas - alphanumeric
13123.123 - real numbers
asjdfklasdjfklaasf - alphabetical strings
123192u3kjwekhf – alphanumeric

Solve of problem 1 : Step 1: Start a c# console application in dot net.

Step 2: Make a class named RandomStringGenerator. The main responsibility of the class is to generate the numbers randomly as required in problem domain.

Step 3: Copy the following code :
public class RandomStringGenerator

    {

        public RandomStringGenerator()

        {

 

        }

        private string RandomString()

        {

            StringBuilder builder = new StringBuilder();

            Random random = new Random();

            char ch;

            for (int i = 0; i < Convert.ToInt32(Math.Floor(100 * random.NextDouble())); i++)

            {

                ch = Convert.ToChar(

                Convert.ToInt32(

                Math.Floor(26 * random.NextDouble() + 65)));

                builder.Append(ch);

            }

            return builder.ToString().ToLower() + ",";

        }

        private string RandumInteger()

        {

            Random random = new Random();

            return random.Next().ToString().ToLower() + ",";

        }

        private string RandomRealNumber()

        {

            Random random = new Random();

            return (random.NextDouble() * random.Next()).ToString().ToLower() + ",";

        }

 

        private string RandumIntegerForOwn()

        {

            Random random = new Random();

            return random.Next().ToString().ToLower();

        }

        private string RandomStringForOwn()

        {

            StringBuilder builder = new StringBuilder();

            Random random = new Random();

            char ch;

            for (int i = 0; i < Convert.ToInt32(Math.Floor(100 * random.NextDouble())); i++)

            {

                ch = Convert.ToChar(

                Convert.ToInt32(

                Math.Floor(26 * random.NextDouble() + 65)));

                builder.Append(ch);

            }

            return builder.ToString().ToLower();

        }

        private string RandomSpace()

        {

            StringBuilder builder = new StringBuilder();

            Random random = new Random();

            char c;

            for (int i = 0; i <= random.Next(10); i++)

            {

                c = ' ';

                builder.Append(c);

            }

            return builder.ToString();

        }

        private string RandomAlphaNeweric()

        {

            StringBuilder builder = new StringBuilder();

            Random random = new Random();

            for (int i = 0; i < Convert.ToInt32(Math.Floor(10 * random.NextDouble())); i++)

            {

                string output;

                if ((i % 2) == 0)

                {

                    output = RandomStringForOwn() + RandumIntegerForOwn();

                }

                else

                {

                    output = RandumIntegerForOwn() + RandomStringForOwn();

                }

 

                builder.Append(output);

            }

            return RandomSpace() + builder.ToString().ToLower() + RandomSpace() + ",";

        }

 

        public string StringOutPut()

        {

            StringBuilder builder = new StringBuilder();

            Random random = new Random();

            int select;

            for (int i = 0; i < Convert.ToInt32(Math.Floor(1000000 * random.NextDouble())); i++)

            {

                select = random.Next(1, 4);

                if (select == 1)

                {

                    builder.Append(RandomString());

                }

                else if (select == 2)

                {

                    builder.Append(RandumInteger());

                }

                else if (select == 3)

                {

                    builder.Append(RandomRealNumber());

                }

                else

                {

                    builder.Append(RandomAlphaNeweric());

                }

            }

            return builder.ToString();

        }

    }

Step 4: Make a class named : OutPutManager : The main responsibility of the class is to save the string in the file until the file size is as like as given size.

Step 5 : Copy the following code:


using System.IO;

 

public class OutPutManager

{

private string filePath = "c:\\output.txt";

private long fileSize = 20971520;

private long GetFileSizeString()

{

FileInfo info = new FileInfo(filePath);

long size = info.Length;

return size;

}

public void WriteToFile(String lines)

{ 

TextWriter tw = new StreamWriter(filePath);

while (GetFileSizeString() <= fileSize)

{

tw.WriteLine(lines);

}

tw.Close();

} 

}

Step 6: In the main program copy the following code under main :


RandomStringGenerator rd = new RandomStringGenerator();

OutPutManager output = new OutPutManager();

output.WriteToFile(rd.StringOutPut()); 

Step 7: Compile the code and run , you will find a file in C:\output.txt who’s size is 20Mb

Solve of problem 2 : Step 1: Start a c# console application in dot net.
Step 2: Make a class named Reader : The main respectability is to read string from a text file and it makes strings part by part to check the type of string as it is told.
Step 3 : Copy the following code there


using System.IO;

public class Reader

{ 

public string ReadFromFile(string filePath)

{

string s;

TextReader tr = new StreamReader(filePath);

s = tr.ReadToEnd();

tr.Close();

return s;

}

public void ExecutorOfStringCking(string input)

{

char[] inputString = input.ToCharArray();

string getSt;

Checker ckString = new Checker();

 

int start = 0,i = 0; 

 

for (i = 0; i < input.Length; i++)

 

{

if (input[i] == ',')

{

getSt = input.Substring(start, i-start );

start = i + 1;

System.Console.WriteLine(getSt + ckString.CatagoryOf(getSt));

}

 

}

}

}

Step 4:
Make a class Checker : The main responsibility of the class is to check the category of a string if it is like as asked in the problem.

Step 5: Copy the following code in the class


public class Checker

{

public string CatagoryOf(string input)

{

 

if(input.IndexOf(' ')==0)

{ 

return " - alphanumeric";

} 

else if(input.IndexOf('.')>=0)

{

return " - real numbers";

}

else 

{

if (IsInteger(input))

{

return " - integer";

}

else

{

return " - alphabetical strings";

}

 

}

 

}

private bool IsInteger(string input)

{

int counter =0;

for (int i = 0; i < input.Length; i++)

{

if (input[i] == '0' ||

input[i] == '1' ||

input[i] == '2' ||

input[i] == '3' ||

input[i] == '4' ||

input[i] == '5' ||

input[i] == '6' ||

input[i] == '7' ||

input[i] == '8' ||

input[i] == '9')

{

counter++;

}

}

if (counter < input.Length)

{

return false;

}

else

return true;

}

}

Step 6:
Copy the following step in the main


string filePath = "c:\\output.txt";

string getString ; 

Reader rd = new Reader();

getString=rd.ReadFromFile(filePath);

rd.ExecutorOfStringCking(getString); 

Console.ReadLine();

Step 7:
Compile the code and run .
Note: you need a file in C:\output.txt .(will be generates if the first program is run).

……………..We are done...:)


No comments:

Post a Comment