Сохранение значения GUID

Рейтинг: 1Ответов: 3Опубликовано: 11.03.2011

Здравствуйте! На первый взгляд может вопрос и глупый, но не могу понять, почему пропускает пропускает первое условие и возвращает пустое значение переменной reading? Как решить этот вопрос? Вот код:

   public static class CreateGuid
    {
        private static string reading;
        public static string _createGuid()
        {
            Guid guid = Guid.NewGuid();
            string guis = Convert.ToString(guid);

            if (File.Exists(@"С:\75g3cfl098ivc55dxs.txt"))
            {
                //чтение guid'a из файла
                var fs2 = new FileStream(@"C:\75g3cfl098ivc55dxs.txt", FileMode.OpenOrCreate, FileAccess.Read);
                var sr = new StreamReader(fs2, Encoding.UTF8);
                while (sr.Peek() != -1)
                {
                    reading = sr.ReadLine();
                }
                sr.Close();
                fs2.Close();
                fs2.Dispose();
            } 
            else
            {
                //Запись guid'a в файл
                var fs = new FileStream(@"C:\75g3cfl098ivc55dxs.txt", FileMode.OpenOrCreate, FileAccess.Write);
                var sw = new StreamWriter(fs);
                sw.WriteLine(guis);
                sw.Close();
                fs.Close();
                fs.Dispose();
            }
            return reading;
        }
    }

Ответы

▲ 2Принят

Маленький пример:

Guid guid = Guid.NewGuid();
string guis = Convert.ToString(guid);
Guid guid2 =  new Guid(guis);

В guid2 то же самое теперь находится, что и в guid. А строку можно сохранить куда угодно =)

▲ 2

Если под "повторным запуском формы" понимается перезапуск всего приложения, то сделать нужно так. Необходимо иметь в наличии некоторое заранее определённое внешнее хранилище - либо в файловой системе, либо в реестре. Каждый раз, когда запускается форма, происходит обращение к этому хранилищу.

Если там пусто (нет запрошенного файла либо нет значения в реестре по указанному пути), то генерируется новый Guid и записывается в это хранилище, а также в локальную переменную. Иначе, Guid просто читается из хранилища и тоже записывается в локальную переменную.

Если при перезапуске формы приложение не пересоздаётся, достаточно просто статической переменной, в котрую записывается Guid.

public static Guid MyGuid = Guid.Empty;

...

if (MyGuid == Guid.Empty)
  MyGuid = Guid.NewGuid();

FileInfo file = new FileInfo(@"C:\" + MyGuid + ".2wvh");...
▲ 2

Реализовал предложенный подход, но он постоянно меняет значение в текстовом файле, откуда я его записываю. Как устранить данную проблему? Код выложил выше.

вместо этого

var fs = new @"C:\75g3cfl098ivc55dxs.txt", FileMode.OpenOrCreate, FileAccess.Write);

попробуйте

new FileStream(@"C:\75g3cfl098ivc55dxs.txt", FileMode.Append, FileAccess.Write);