A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 来明坤 中级黑马   /  2012-8-28 01:32  /  1979 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1 使用StreamWriter向文件写入数据
[c-sharp] view plaincopyprint?
public static void WriteToLog(string logFileName, string data)  
        {  
            using (FileStream fileStream = new FileStream(logFileName, FileMode.Append, FileAccess.Write, FileShare.None))  
            {  
                using (StreamWriter streamWrtie = new StreamWriter(fileStream))  
                {  
                    streamWrtie.Write(data);  
                }  
            }  
        }  

2 用StreamReader读取文本
[c-sharp] view plaincopyprint?
public static string  ReadAllLog(string logFileName)  
       {  
           if (!File.Exists(logFileName))  
           {  
               throw (new FileNotFoundException("logfile does not exit", logFileName));  
           }  
           string contents = "";  
           using (FileStream fileStream = new FileStream(logFileName, FileMode.Open, FileAccess.Read, FileShare.None))  
           {  
               using (StreamReader streamRead = new StreamReader(fileStream))  
               {  
                   contents = streamRead.ReadToEnd();  
               }  
           }  
           return contents;  
       }  

3 要逐行的读取文本,则使用peek()方法
[c-sharp] view plaincopyprint?
public static void ReadLogPeeking(string logFileName)  
        {  
            if (!File.Exists(logFileName))  
            {  
                throw (new FileNotFoundException("logfile does not exit", logFileName));  
            }  
            using (FileStream fileStream = new FileStream(logFileName, FileMode.Open, FileAccess.Read, FileShare.None))  
            {  
                using (StreamReader streamReader = new StreamReader(fileStream))  
                {  
                    while (streamReader.Peek() != -1)  
                    {  
                        Console.WriteLine(streamReader.ReadLine());  
                    }  
                }  
            }  
        }  


[c-sharp] view plaincopyprint?
public static void ReadLogByLines(string logFileName)  
        {  
            if (!File.Exists(logFileName))  
            {  
                throw (new FileNotFoundException("logfile does not exit", logFileName));  
            }  
            using (FileStream fileStream = new FileStream(logFileName, FileMode.Open, FileAccess.Read, FileShare.None))  
            {  
                using (StreamReader streamReader = new StreamReader(fileStream))  
                {  
                    string text = streamReader.ReadLine();  
                    while (text != null)  
                    {  
                        Console.WriteLine(text);  
                        text = streamReader.ReadLine();  
                    }  
                }  
            }  
        }  

4 若要读取一个字节则用read()方法
[c-sharp] view plaincopyprint?
public static void ReadLogAsBytes(string logFileName)  
       {  
           if (!File.Exists(logFileName))  
           {  
               throw (new FileNotFoundException("logfile does not exit", logFileName));  
           }  
           using (FileStream fileStream = new FileStream(logFileName, FileMode.Open, FileAccess.Read, FileShare.None))  
           {  
               using (StreamReader streamReader = new StreamReader(fileStream))  
               {  
                   while (streamReader.Peek() != -1)  
                   {  
                       Console.WriteLine(streamReader.Read());  
                   }  
               }  
           }  
       }  

5 按块读取,则要创建一个任意长度的缓冲区,这个长度根据你的性能需求来决定
[c-sharp] view plaincopyprint?
public static void ReadAllBuffereLog(string logFileName)  
        {  
            if (!File.Exists(logFileName))  
            {  
                throw (new FileNotFoundException("logfile does not exit", logFileName));  
            }  
            using (FileStream fileStream = new FileStream(logFileName, FileMode.Open, FileAccess.Read, FileShare.None))  
            {  
                using (StreamReader streamReader = new StreamReader(fileStream))  
                {  
                    while (streamReader.Peek() != -1)  
                    {  
                        char[] buffer=new char [10];  
                        int bufferFileSize = streamReader.Read(buffer, 0, 10);  
                        foreach (char c in buffer)  
                        {  
                            Console.Write(c);  
                        }  
                        Console.WriteLine();  
                        Console.WriteLine(bufferFileSize);  
                    }  
                }  
            }  
        }  

1 个回复

倒序浏览
恩  学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马