Read the given filename and yield return a string

image_pdfimage_print
   
 
// 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) &amp;&amp; (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&#91;&#93;> 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&#91;&#93;> 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) &amp;&amp; (readChar.Length > 0));

        r.Close();
        fs.Close();
      }

      yield break;
    }
    #endregion
    }
}

   
     


This entry was posted in File Stream. Bookmark the permalink.