File Path Collection

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections.ObjectModel;

public class FilePathCollection : Collection
{
public FilePathCollection Combine(string prefix)
{
FilePathCollection res = new FilePathCollection();

foreach (string s in this)
res.Add(Path.Combine(prefix, s));

return res;
}

public long GetTotalFileSize()
{
long res = 0;

for(int i = 0; i < this.Count; i++) { string current = this[i]; if (System.IO.File.Exists(current)) { FileInfo fi = new FileInfo(current); res += fi.Length; } else { this.RemoveAt(i); i--; } } return res; } } [/csharp]

Map Path

   
 

#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 string MapPath(string path)
    {
      if (Path.IsPathRooted(path))
      {
        return path;
      }
      else if (HostingEnvironment.IsHosted)
      {
        return HostingEnvironment.MapPath(path);
      }
      else if (VirtualPathUtility.IsAppRelative(path))
      {
        string physicalPath = VirtualPathUtility.ToAbsolute(path, "/");
        physicalPath = physicalPath.Replace(&#039;/&#039;, &#039;&#039;);
        physicalPath = physicalPath.Substring(1);
        physicalPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, physicalPath);

        return physicalPath;
      }
      else
      {
        throw new Exception("Could not resolve non-rooted path.");
      }
    }
  }
}

   
     


Resolve Path

   
 

#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 string ResolvePath(string basePath, string relativePath)
    {
      string resolvedPath = Path.Combine(basePath, relativePath);
      resolvedPath = Path.GetFullPath(resolvedPath);

      return resolvedPath;
    }
  }
}

   
     


Use static methods in Path

   
  

using System;
using System.Diagnostics;
using System.IO;
class TestPathApp {
    static void Main(string[] args) {
        Process p = Process.GetCurrentProcess();
        ProcessModule pm = p.MainModule;
        string s = pm.ModuleName;

        Console.WriteLine(Path.GetFullPath(s));
        Console.WriteLine(Path.GetFileName(s));
        Console.WriteLine(Path.GetFileNameWithoutExtension(s));
        Console.WriteLine(Path.GetDirectoryName(Directory.GetCurrentDirectory()));
        Console.WriteLine(Path.GetPathRoot(Directory.GetCurrentDirectory()));
        Console.WriteLine(Path.GetTempPath());
        Console.WriteLine(Path.GetTempFileName());
    }
}

   
     


Path.GetTempFileName

   
  
using System;
using System.IO;

class MainClass {
    static void Main() {
        string tempFile = Path.GetTempFileName();

        Console.WriteLine("Using " + tempFile);

        using (FileStream fs = new FileStream(tempFile, FileMode.Open)) {
            // (Write some data.)
        }

        // Now delete the file.
        File.Delete(tempFile);

    }
}

   
     


Paths in C#

   
  
/*
s = new FileStream("C:	empGoo.txt", FileMode.Create);

or use forward (Unix-style) slashes:

s = new FileStream("C:/temp/Goo.txt", FileMode.Create);

or use the at sign (@), which is a control-character suppressor:

s = new FileStream(@"C:	empGoo.txt", FileMode.Create);
*/

   
     


Deep Copy with MemoryStream

   
 
//http://simpledbbrowser.codeplex.com/
//License:  Microsoft Public License (Ms-PL)  
using System.Diagnostics;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;

namespace AWS.Framework.WPF.Utility
{
    public sealed class Helpers
    {
        public static T DeepCopy<T>(object toClone)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(ms, toClone);
                ms.Position = 0;
                return (T)bf.Deserialize(ms);
            }
        }
   }
}