Determines if a directory exists

   
 
/*
Copyright (c) 2010 <a href="http://www.gutgames.com">James Craig</a>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.*/

#region Usings
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;

#endregion

namespace Utilities
{
    /// <summary>
    /// Utility class for managing files
    /// </summary>
    public static class FileManager
    {


        /// <summary>
        /// Determines if a directory exists
        /// </summary>
        /// <param name="DirectoryPath">Path of the directory</param>
        /// <returns>true if it exists, false otherwise</returns>
        public static bool DirectoryExists(string DirectoryPath)
        {
            try
            {
                return Directory.Exists(DirectoryPath);
            }
            catch (Exception a)
            {
                throw a;
            }
        }
    }
}

   
     


Renames a file

   
 

/*
Copyright (c) 2010 <a href="http://www.gutgames.com">James Craig</a>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.*/

#region Usings
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;

#endregion

namespace Utilities
{
    /// <summary>
    /// Utility class for managing files
    /// </summary>
    public static class FileManager
    {

        /// <summary>
        /// Renames a file
        /// </summary>
        /// <param name="FileName">Original file</param>
        /// <param name="NewFileName">New file name</param>
        public static void RenameFile(string FileName, string NewFileName)
        {
            try
            {
                File.Move(FileName, NewFileName);
            }
            catch (Exception a)
            {
                throw a;
            }
        }
    }
}

   
     


Saves a file

/*
Copyright (c) 2010 James Craig

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.*/

#region Usings
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;

#endregion

namespace Utilities
{
///

/// Utility class for managing files
///

public static class FileManager
{
///

/// Determines if a directory exists
///

/// Path of the directory /// true if it exists, false otherwise
public static bool DirectoryExists(string DirectoryPath)
{
try
{
return Directory.Exists(DirectoryPath);
}
catch (Exception a)
{
throw a;
}
}
///

/// Saves a file
///

/// Content of the file /// Path of the file /// Tells the system if you wish to append data or create a new document public static void SaveFile(string Content, string FileName,bool Append)
{
FileStream Writer = null;
try
{
byte[] ContentBytes = Encoding.UTF8.GetBytes(Content);
int Index = FileName.LastIndexOf('/');
if (Index <= 0) { Index = FileName.LastIndexOf(''); } if (Index <= 0) { throw new Exception("Directory must be specified for the file"); } string Directory = FileName.Remove(Index) + "/"; bool Opened = false; while (!Opened) { try { if (Append) { Writer = File.Open(FileName, FileMode.Append, FileAccess.Write, FileShare.None); } else { Writer = File.Open(FileName, FileMode.Create, FileAccess.Write, FileShare.None); } Opened = true; } catch (System.IO.IOException e) { throw e; } } Writer.Write(ContentBytes, 0, ContentBytes.Length); Writer.Close(); } catch (Exception a) { throw a; } finally { if (Writer != null) { Writer.Close(); Writer.Dispose(); } } } } } [/csharp]

Get File SystemInfo

   
 

#region License
// (c) Intergen.
// This source is subject to the Microsoft Public License (Ms-PL).
// Please see http://go.microsoft.com/fwlink/?LinkID=131993 for details.
// All other rights reserved.
#endregion

using System;
using System.Text;
using System.IO;
using System.Web;
using System.Web.Hosting;

namespace Utilities.IO
{
  public class FileUtils
  {
    public static FileSystemInfo GetFileSystemInfo(string path)
    {
      if (File.Exists(path))
      {
        return new FileInfo(path);
      }
      else if (Directory.Exists(path))
      {
        return new DirectoryInfo(path);
      }

      return null;
    }

  }
}

   
     


Delete a file if exist

   
 
using System.IO;


  /// <summary>
  /// Static methods extending the <see cref="File"/> class.
  /// </summary>
  public static class FileExtension
  {
    /// <summary>
    /// Deletes the specified <paramref name="file"/> if it exists.
    /// </summary>
    /// <param name="file">The file to delete.</param>
    public static void DeleteIfExists(string file)
    {
      if (File.Exists(file))
      {
        File.Delete(file);
      }
    }
  }

   
     


Sets the read-only property of the file to true.

   
 

#region License and Copyright
/* -------------------------------------------------------------------------
 * Dotnet Commons IO
 *
 *
 * This library is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU Lesser General Public License as published by 
 * the Free Software Foundation; either version 2.1 of the License, or 
 * (at your option) any later version.
 *
 * This library 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 Lesser General Public License 
 * for more details. 
 *
 * You should have received a copy of the GNU Lesser General Public License 
 * along with this library; if not, write to the 
 * 
 * Free Software Foundation, Inc., 
 * 59 Temple Place, 
 * Suite 330, 
 * Boston, 
 * MA 02111-1307 
 * USA 
 * 
 * -------------------------------------------------------------------------
 */
#endregion

using System;
using System.Collections;
using System.Globalization;
using System.IO;

namespace Dotnet.Commons.IO
{
  
  ///  
  /// <summary>  
  /// This class provides basic facilities for manipulating files and file paths.
    /// 
    /// <h3>File-related methods</h3>
    /// There are methods to 
    /// <list type="bullet">
    ///     <item>copy a file to another file,</item>
    ///     <item>compare the content of 2 files,</item>
    ///     <item>delete files using the wildcard character,</item>
    ///     <item>etc</item>
    /// </list>
  /// </summary>
  ///     
  public sealed class FileUtils
  {
        /// ---------------------------------------------------------------
        /// <summary>
        /// Sets the read-only property of the file to true.
        /// </summary>
        /// <param name="file">The abstract path name of the file to modify</param>
        /// ---------------------------------------------------------------
        public static bool SetReadOnly(FileInfo file)
        {
            try
            {
                file.Attributes = file.Attributes | FileAttributes.ReadOnly;
                return true;
            }
            catch (System.Exception exception)
            {
                String exceptionMessage = exception.Message;
                return false;
            }
        }
   }
}

   
     


Remove a file or similar files if wildcard is included.

   
 
#region License and Copyright
/* -------------------------------------------------------------------------
 * Dotnet Commons IO
 *
 *
 * This library is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU Lesser General Public License as published by 
 * the Free Software Foundation; either version 2.1 of the License, or 
 * (at your option) any later version.
 *
 * This library 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 Lesser General Public License 
 * for more details. 
 *
 * You should have received a copy of the GNU Lesser General Public License 
 * along with this library; if not, write to the 
 * 
 * Free Software Foundation, Inc., 
 * 59 Temple Place, 
 * Suite 330, 
 * Boston, 
 * MA 02111-1307 
 * USA 
 * 
 * -------------------------------------------------------------------------
 */
#endregion

using System;
using System.Collections;
using System.Globalization;
using System.IO;

namespace Dotnet.Commons.IO
{

    ///  
    /// <summary>  
    /// This class provides basic facilities for manipulating files and file paths.
    /// 
    /// <h3>File-related methods</h3>
    /// There are methods to 
    /// <list type="bullet">
    ///     <item>copy a file to another file,</item>
    ///     <item>compare the content of 2 files,</item>
    ///     <item>delete files using the wildcard character,</item>
    ///     <item>etc</item>
    /// </list>
    /// </summary>
    ///     
    public sealed class FileUtils
    {
        private static bool hasWildCards(string file)
        {
            return file.IndexOf("*") > -1;
        }

        /// ---------------------------------------------------------------
        /// <summary>
        /// Get all the files that matches a wildcard pattern, eg. (*.tmp)
        /// </summary>
        /// <param name="pathPattern">Wildcard pattern to search, eg. (Profile*.doc)</param>
        /// <returns>an array of FileInfo objects that results from the wildcard pattern file search</returns>
        /// ---------------------------------------------------------------
        public static FileInfo[] GetFilesMatchWildCard(string pathPattern)
        {
            FileInfo[] files = new FileInfo[0];
            if (hasWildCards(pathPattern))
            {
                string dir = Path.GetDirectoryName(pathPattern);
                DirectoryInfo info = new DirectoryInfo(dir);
                string pattern = Path.GetFileName(pathPattern);
                if (info.Exists)
                    files = info.GetFiles(pattern);
            }
            else
            {
                files = new FileInfo[] { new FileInfo(pathPattern.Trim()) };
            }
            return files;
        }
        /// ---------------------------------------------------------------
        /// <summary>
        /// Remove a file or similar files if wildcard is included.
        /// </summary>
        /// <param name="path">path of the file(s) to delete</param>
        /// ---------------------------------------------------------------
        public static void Remove(string path)
        {
            bool hasWildCard = FileUtils.hasWildCards(path);

            if (hasWildCard)
            {
                FileInfo[] filesToRemove = GetFilesMatchWildCard(path);
                foreach (FileInfo file in filesToRemove)
                {
                    // delete each file
                    file.Delete();
                }
                return;
            }

            FileInfo fi = new FileInfo(path);
            if (fi.Exists) fi.Delete();
        }


        /// ---------------------------------------------------------------
        /// <summary>
        /// Remove a file or Directory recursively
        /// </summary>
        /// <param name="path"></param>
        /// ---------------------------------------------------------------
        public static void RemoveAll(string path)
        {
            if (IsDirectory(path))
            {
                Directory.Delete(path, true);
            }
            else
            {
                if (FileUtils.hasWildCards(path))
                    Remove(path);
                else
                    File.Delete(path);
            }
        }
        /// ---------------------------------------------------------------
        /// <summary>
        /// Determine if a path is the path of a directory.
        /// </summary>
        /// <param name="path"></param>
        /// <returns>true if path is a valid directory, false otherwise</returns>
        /// ---------------------------------------------------------------
        public static bool IsDirectory(string path)
        {
            return Directory.Exists(path);
        }
    }
}