Mega Code Archive

 
Categories / C# / File Stream
 

Read the given filename and yield return a string

// crudwork // Copyright 2004 by Steve T. Pham (http://www.crudwork.com) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with This program.  If not, see <http://www.gnu.org/licenses/>. using System; using System.Collections.Generic; using System.IO; using System.Text; using System.CodeDom.Compiler; using System.Text.RegularExpressions; namespace crudwork.Utilities {   /// <summary>   /// File Utility   /// </summary>   public static class FileUtil   {     #region ReadFile methods     ///// <summary>     ///// Read content of file and store into a string array.     ///// </summary>     ///// <param name="filename"></param>     ///// <returns></returns>     //public static string[] ReadFile(string filename)     //{     //    try     //    {     //        List<String> results = new List<string>();     //        using (StreamReader r = new StreamReader(filename))     //        {     //            while (!r.EndOfStream)     //            {     //                results.Add(r.ReadLine());     //            }     //            r.Close();     //        }     //        return results.ToArray();     //    }     //    catch (Exception ex)     //    {     //        DebuggerTool.AddData(ex, "filename", filename);     //        throw;     //    }     //}     /// <summary>     /// Read the given filename and yield return a string     /// </summary>     /// <param name="filename"></param>     /// <returns></returns>     public static IEnumerable<string> ReadFile(string filename)     {       using (StreamReader r = new StreamReader(filename))       {         while (!r.EndOfStream)         {           string line = r.ReadLine();           yield return line;         }         r.Close();       }       yield break;     }     ///// <summary>     ///// Read the given filename and return a byte array     ///// </summary>     ///// <param name="filename"></param>     ///// <param name="bufSize"></param>     ///// <returns></returns>     //public static byte[] ReadFile(string filename, int bufSize)     //{     //    StringBuilder s = new StringBuilder();     //    List<byte> results = null;     //    using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read, bufSize))     //    using (BinaryReader r = new BinaryReader(fs))     //    {     //        results = new List<byte>((int)fs.Length);     //        byte[] readChar = null;     //        do     //        {     //            readChar = r.ReadBytes(bufSize);     //            results.AddRange(readChar);     //        } while ((readChar != null) && (readChar.Length > 0));     //        r.Close();     //        fs.Close();     //    }     //    return results.ToArray();     //}     /// <summary>     /// Read the filename and yield return a byte array     /// </summary>     /// <param name="filename"></param>     /// <param name="bufSize"></param>     /// <returns></returns>     public static IEnumerable<byte[]> ReadFile(string filename, int bufSize)     {       return ReadFile(filename, bufSize, 0);     }     /// <summary>     /// Read the filename, start a the specified position, and yield return a byte array     /// </summary>     /// <param name="filename">type input file</param>     /// <param name="bufSize">this bufSize will be multiple by 10</param>     /// <param name="startAtPosition">set the starting position</param>     /// <returns></returns>     public static IEnumerable<byte[]> ReadFile(string filename, int bufSize, int startAtPosition)     {       using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read, bufSize * 10))       using (BinaryReader r = new BinaryReader(fs))       {         fs.Position = startAtPosition;         byte[] readChar = null;         do         {           readChar = r.ReadBytes(bufSize);           if (readChar != null)             yield return readChar;         } while ((readChar != null) && (readChar.Length > 0));         r.Close();         fs.Close();       }       yield break;     }     #endregion     } }