All pastes #247845 Raw Edit

Something

public text v1 · immutable
#247845 ·published 2006-11-13 22:38 UTC
rendered paste body
using System;
using System.Globalization;
using System.IO;

namespace System.Web.Util
{
	internal sealed class FileUtils
	{
		internal delegate object CreateTempFile (string path);

		static Random rnd = new Random ();
		
		internal static object CreateTemporaryFile (string tempdir, CreateTempFile createFile)
		{
			return CreateTemporaryFile (tempdir, null, null, createFile);
		}

		internal static object CreateTemporaryFile (string tempdir, string extension, CreateTempFile createFile)
		{
			return CreateTemporaryFile (tempdir, null, extension, createFile);
		}

		internal static object CreateTemporaryFile (string tempdir, string prefix, string extension, CreateTempFile createFile)
		{
			if (tempdir == null || tempdir.Length == 0)
				return null;
			if (createFile == null)
				return null;
			string path = null;
			bool done = false;
			object ret = null;
			int num;
			
			do {
				lock (rnd) {
					num = rnd.Next ();
				}

                                path = Path.Combine (tempdir,
						     String.Format ("{0}.{1}{2}", (prefix != null) ? prefix : "",
								    num.ToString ("x", CultureInfo.InvariantCulture),
								    (extension != null) ? "." + extension : ""));
                                        
                                try {
                                        ret = createFile (path);
                                } catch (System.IO.IOException) {
                                } catch { throw; }
                        } while (ret == null);

			return ret;
		}
	}
}