using System; | |
using System.Collections.Generic; | |
using System.IO; | |
using System.Text; | |
namespace Google.ProtocolBuffers.ProtoGen | |
{ | |
internal class ProtoFile : TempFile | |
{ | |
public ProtoFile(string filename, string contents) | |
: base(filename, contents) | |
{ | |
} | |
} | |
internal class TempFile : IDisposable | |
{ | |
private string tempFile; | |
public static TempFile Attach(string path) | |
{ | |
return new TempFile(path, null); | |
} | |
protected TempFile(string filename, string contents) | |
{ | |
tempFile = filename; | |
if (contents != null) | |
{ | |
File.WriteAllText(tempFile, contents, new UTF8Encoding(false)); | |
} | |
} | |
public TempFile(string contents) | |
: this(Path.GetTempFileName(), contents) | |
{ | |
} | |
public string TempPath | |
{ | |
get { return tempFile; } | |
} | |
public void ChangeExtension(string ext) | |
{ | |
string newFile = Path.ChangeExtension(tempFile, ext); | |
File.Move(tempFile, newFile); | |
tempFile = newFile; | |
} | |
public void Dispose() | |
{ | |
if (File.Exists(tempFile)) | |
{ | |
File.Delete(tempFile); | |
} | |
} | |
} | |
} |