Copy from one file to another file

   
 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// This file is best viewed using outline mode (Ctrl-M Ctrl-O)
//
// This program uses code hyperlinks available as part of the HyperAddin Visual Studio plug-in.
// It is available from http://www.codeplex.com/hyperAddin 
// 
using System;
using System.IO;
namespace Utilities
{
    static class StreamUtilities {
        public static void CopyFromFile(string fromFilePath, Stream toStream)
        {
            using (Stream fromStream = File.OpenRead(fromFilePath))
                CopyStream(fromStream, toStream);
        }

        public static void CopyToFile(Stream fromStream, string toFilePath)
        {
            using (Stream toStream = File.Create(toFilePath))
                CopyStream(fromStream, toStream);
        }

        /// <summary>
        /// CopyStream simply copies &#039;fromStream&#039; to &#039;toStream&#039;
        /// </summary>
        public static int CopyStream(Stream fromStream, Stream toStream)
        {
            byte[] buffer = new byte[8192];
            int totalBytes = 0;
            for (; ; )
            {
                int count = fromStream.Read(buffer, 0, buffer.Length);
                if (count == 0)
                    break;
                toStream.Write(buffer, 0, count);
                totalBytes += count;
            }
            return totalBytes;
        }
    };
}

   
     


return true if the filename has the given attribute set

   
 

// 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 HasAttribute
    /// <summary>
    /// return true if the filename has the given attribute set
    /// </summary>
    /// <param name="filename"></param>
    /// <param name="attr"></param>
    /// <returns></returns>
    public static bool HasAttribute(string filename, FileAttributes attr)
    {
      return (File.GetAttributes(filename) &amp; attr) == attr;
    }
    #endregion
   }
}

   
     


Get Files / Get Folders methods

// 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 .

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.CodeDom.Compiler;
using System.Text.RegularExpressions;

namespace crudwork.Utilities
{
///

/// File Utility
///

public static class FileUtil
{

#region Enums
///

/// File order type for sorting list of filenames
///

public enum FileOrderType
{
///

/// No sort
///

None = 0,

///

/// Sort by filename
///

Filename = 1,

///

/// Sort by extension
///

Extension = 2,

///

/// Sort by the size
///

Size = 3,

///

/// Sort by last modified timestamp
///

LastWriteTime = 4,

///

/// Sort by file creation timestamp
///

CreationDate = 5,
}
#endregion
#region GetFiles / GetFolders methods
///

/// Shorten the folder name
///

/// /// ///
public static string[] MakeRelativePath(string[] fileList, string path)
{
List results = new List();

for (int i = 0; i < fileList.Length; i++) { string file = fileList[i]; results.Add(file.Replace(path + "", "")); } return results.ToArray(); } ///

/// sort the file list based on the given order type
///

/// /// ///
public static string[] OrderFileBy(string[] fileList, FileOrderType fileOrderType)
{
string[] orderKey = new string[fileList.Length];
string[] orderVal = new string[fileList.Length];

//int maskLength = StringUtil.MaxLength(fileList);
int maskLength = 100;
string maskFormat = String.Format(@”{{0,{0}}}”, maskLength);

for (int i = 0; i < fileList.Length; i++) { string filename = fileList[i]; string orderByKey; if (!File.Exists(filename)) throw new FileNotFoundException(filename); FileInfo fi = new FileInfo(filename); switch (fileOrderType) { case FileOrderType.None: orderByKey = ""; break; case FileOrderType.Filename: { orderByKey = String.Format(maskFormat, fi.Name); } break; case FileOrderType.LastWriteTime: { DateTime dt = fi.LastWriteTime; orderByKey = String.Format("{0:0000}{1:00}{2:00}{3:00}{4:00}{5:00}{6:000}", dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, dt.Millisecond ); } break; default: throw new ArgumentOutOfRangeException("not supported: " + fileOrderType); } orderKey[i] = orderByKey; orderVal[i] = fileList[i]; } if (fileOrderType != FileOrderType.None) { Array.Sort(orderKey, orderVal); } return orderVal; } #endregion } } [/csharp]

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) &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
    }
}

   
     


Copy a file to a different filename, with cleaning null characters.

   
 

// 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 CleanNull
    /// <summary>
    /// Copy a file to a different filename, with cleaning null characters.
    /// </summary>
    /// <param name="filename"></param>
    /// <param name="outfile"></param>
    public static void CleanNull(string filename, string outfile)
    {
      try
      {
        if (File.Exists(outfile))
          File.Delete(outfile);

        using (StreamReader sr = new StreamReader(filename))
        using (BinaryReader br = new BinaryReader(sr.BaseStream))
        using (StreamWriter sw = new StreamWriter(outfile))
        using (BinaryWriter bw = new BinaryWriter(sw.BaseStream))
        {
          while (br.PeekChar() != -1)
          {
            byte b = br.ReadByte();

            // skip NULL character
            if (b == 0)
              continue;

            bw.Write(b);
          }

          sw.Flush();
          sw.Close();

          sr.Close();
        }
      }
      catch (Exception ex)
      {
        throw;
      }
    }
    #endregion

   }
}

   
     


Append File methods

   
 

// 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 AppendFile methods
    /// <summary>
    /// Append a string value to a filename
    /// </summary>
    /// <param name="filename"></param>
    /// <param name="entry"></param>
    public static void AppendFile(string filename, string entry)
    {
      using (StreamWriter w = new StreamWriter(filename, true))
      {
        w.WriteLine(entry);
        w.Flush();
        w.Close();
      }
    }
    #endregion
   }
}

   
     


Write File methods

   
 
// 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 WriteFile methods
    /// <summary>
    /// Write a byte array to filename
    /// </summary>
    /// <param name="filename"></param>
    /// <param name="content"></param>
    public static void WriteFile(string filename, byte[] content)
    {
      int bufSize = 1024;
      try
      {
        using (FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.Read, bufSize))
        using (BinaryWriter w = new BinaryWriter(fs))
        {
          for (int i = 0; i < content.Length; i++)
          {
            w.Write(content&#91;i&#93;);
          }

          w.Flush();
          w.Close();
        }
      }
      catch (Exception ex)
      {
        throw;
      }
    }

    /// <summary>
    /// Write a string array to a file.
    /// </summary>
    /// <param name="filename"></param>
    /// <param name="content"></param>
    public static void WriteFile(string filename, string[] content)
    {
      try
      {
        using (StreamWriter w = new StreamWriter(filename, false))
        {
          for (int i = 0; i < content.Length; i++)
          {
            w.WriteLine(content&#91;i&#93;);
          }

          w.Flush();
          w.Close();
        }
      }
      catch (Exception ex)
      {
        
        throw;
      }
    }

    /// <summary>
    /// Write a string to a file.
    /// </summary>
    /// <param name="filename"></param>
    /// <param name="content"></param>
    public static void WriteFile(string filename, string content)
    {
      WriteFile(filename, new string[] { content });
    }
    #endregion
   }
}