#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;
}
}
}
Month: February 2011
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);
}
}
}
}
MemoryStream.ToArray, MemoryStream.ReadDecimal
using System;
using System.IO;
class MainClass
{
public static byte[] DecimalToByteArray (decimal src){
using (MemoryStream stream = new MemoryStream()) {
using (BinaryWriter writer = new BinaryWriter(stream)){
writer.Write(src);
return stream.ToArray();
}
}
}
public static decimal ByteArrayToDecimal (byte[] src){
using (MemoryStream stream = new MemoryStream(src)){
using (BinaryReader reader = new BinaryReader(stream)){
return reader.ReadDecimal();
}
}
}
public static void Main()
{
byte[] b = null;
b = BitConverter.GetBytes(true);
Console.WriteLine(BitConverter.ToString(b));
Console.WriteLine(BitConverter.ToBoolean(b, 0));
b = BitConverter.GetBytes(3678);
Console.WriteLine(BitConverter.ToString(b));
Console.WriteLine(BitConverter.ToInt32(b, 0));
b = DecimalToByteArray(285998345545.563846696m);
Console.WriteLine(BitConverter.ToString(b));
Console.WriteLine(ByteArrayToDecimal(b));
}
}
Use MemoryStream and BinaryReader to convert Byte array to decimal
using System;
using System.IO;
class Test {
public static byte[] DecimalToByteArray (decimal src) {
using (MemoryStream stream = new MemoryStream()) {
using (BinaryWriter writer = new BinaryWriter(stream)){
writer.Write(src);
return stream.ToArray();
}
}
}
public static decimal ByteArrayToDecimal (byte[] src) {
using (MemoryStream stream = new MemoryStream(src)) {
using (BinaryReader reader = new BinaryReader(stream)) {
return reader.ReadDecimal();
}
}
}
public static void Main() {
byte[] b = BitConverter.GetBytes(true);
// Convert a decimal to a byte array and display.
b = DecimalToByteArray(12345678987654321.563846696m);
Console.WriteLine(BitConverter.ToString(b));
// Convert a byte array to a decimal and display.
Console.WriteLine(ByteArrayToDecimal(b));
}
}

