rendered paste bodyusing 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;
}
}
}