Kopiowanie z pamięci do pliku

0

Mam taki kod

static void Main(string[] args)
        {
            using (var memoryStream = new MemoryStream())
            using (var streamWriter = new StreamWriter(memoryStream))
            {
                streamWriter.WriteLine("Test content");
                streamWriter.Flush();

                memoryStream.Position = 0;
                memoryStream.CopyTo(File.Create("test.txt"));
            }
        }

Po uruchomieniu tworzony jest nowy plik, ale jego zawartość jest pusta. Dlaczego?

1

Sprawdziłem u siebie, plik jest tworzony, zawartość jest.

0

O, tego to się nie spodziewałem ;) Teraz to już naprawdę nie mam pojęcia, co źle robię.

1

To pewnie net core? Na net core tez nie mam zawartości w pliku. Poprzedni post dotyczyl aplikacji net framework.

0

Tak, to Core. Czyli to jednak z kodem jest problem.

0

Tylko że File.Create zwraca filestreama, jeśli o to chodzi.

4

Wygląda na to że destruktor FileStream w wersji .net core nie zamyka strumienia FileStream ... albo nie daje rady go zamknąć w momencie kiedy aplikacja się już zamyka, jawne jego zamknięcie działa:

 static void Main(string[] args)
        {
            using (var memoryStream = new MemoryStream())
            using (var streamWriter = new StreamWriter(memoryStream))
            {
                streamWriter.WriteLine("Test content");
                streamWriter.Flush();

                memoryStream.Position = 0;
                using (var fileStream = File.Create(@"d:\test.txt"))
                {
                    memoryStream.CopyTo(fileStream);
                }
            }
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1