var dict = File.ReadLines("test.txt")
.Where(line => !string.IsNullOrWhitespace(line))
.Select(line => line.Split(new char[] { '=' }, 2, 0))
.ToDictionary(parts => parts[0], parts => parts[1]);
or
enter code here
line="to=xxx@gmail.com=yyy@yahoo.co.in";
string[] tokens = line.Split(new char[] { '=' }, 2, 0);
ans:
tokens[0]=to
token[1]=xxx@gmail.com=yyy@yahoo.co.in
Ничто не гарантируется, если процесс будет уничтожен преждевременно, однако, я использую" using
", чтобы сделать это..
using System;
using System.IO;
sealed class TempFile : IDisposable
{
string path;
public TempFile() : this(System.IO.Path.GetTempFileName()) { }
public TempFile(string path)
{
if (string.IsNullOrEmpty(path)) throw new ArgumentNullException("path");
this.path = path;
}
public string Path
{
get
{
if (path == null) throw new ObjectDisposedException(GetType().Name);
return path;
}
}
~TempFile() { Dispose(false); }
public void Dispose() { Dispose(true); }
private void Dispose(bool disposing)
{
if (disposing)
{
GC.SuppressFinalize(this);
}
if (path != null)
{
try { File.Delete(path); }
catch { } // best effort
path = null;
}
}
}
static class Program
{
static void Main()
{
string path;
using (var tmp = new TempFile())
{
path = tmp.Path;
Console.WriteLine(File.Exists(path));
}
Console.WriteLine(File.Exists(path));
}
}
Теперь, когда эти TempFile
расположен или собрал "мусор", файл удален (если возможный). Вы могли, очевидно, использовать это, как плотно ограниченный по объему как Вам угодно или в наборе где-нибудь.
Вы могли P/Invoke CreateFile
и передавать эти FILE_FLAG_DELETE_ON_CLOSE
флаг. Это говорит Windows удалять файл, как только все дескрипторы закрываются. См. также: Win32 CreateFile
документы .
Я не, прежде всего, программист C#, но в C++ я использовал бы RAII для этого. Существуют [приблизительно 111] подсказки при использовании подобного RAII поведения в C# онлайн, но большинство, кажется, использует финализатор — который не детерминирован.
я думаю, что существуют некоторые функции Windows SDK для создания временных файлов, но не знают, удалены ли они автоматически на завершении программы. Существует функция GetTempPath, но файлы там только удалены, когда Вы выходите из системы или перезапускаете, IIRC.
P.S. в документации деструктора C# говорится, что Вы можете и должны высвободить средства там, которые я нахожу немного нечетными. Если так, Вы могли просто удалить tempfile в деструкторе, но снова, это не могло бы быть абсолютно детерминировано.
Вы могли запустить поток на запуске, который удалит файлы, которые существуют, когда они "не были должны" для восстановления с катастрофического отказа.
Его хорошее, чтобы видеть, что Вы хотите быть ответственными, но если бы файлы не огромны (> 50 МБ) Вы соответствовали бы всем (включенный MS) в отъезде их во временном каталоге. Дисковое пространство в изобилии.
Как csl отправленный, GetTempPath является способом пойти. Пользователи, которые коротки на пространстве, будут в состоянии выполнить очистку диска, и Ваши файлы (наряду со всеми else's) будут очищены.