Файлы не создаются, когда я запускаю этот код - PullRequest
0 голосов
/ 01 марта 2012

У меня есть следующий код:

List<String> suma = new List<String>();
if (File.Exists(Application.StartupPath + "/totalsold" + username))
     suma = new List<String>(File.ReadAllLines(Application.StartupPath + "/totalsold" + username));
List<String> actual = new List<String>();
if (File.Exists(Application.StartupPath + "/totalsold" + username))
   actual = new List<String>(File.ReadAllLines(Application.StartupPath + "/soldproducts" + username));
List<String> sumatotal = new List<String>();
if (File.Exists(Application.StartupPath + "/totalsoldadmin"))
    sumatotal = new List<String>(File.ReadAllLines(Application.StartupPath + "/totalsoldadmin"));      
 StreamWriter vanzare = new StreamWriter(Application.StartupPath + "/soldproducts" + username);
 StreamWriter total = new StreamWriter(Application.StartupPath + "/totalsold" + username);
 StreamWriter totall = new StreamWriter(Application.StartupPath + "/totalsoldadmin");   

Почему файлы vanzare, total и total не создаются после выполнения кода ниже?

 vanzare.WriteLine("Hello World");
 total.WriteLine("Helle World again!");
 totall.WriteLine("Hello World again and again!");

Проблема решена!

Ответы [ 2 ]

0 голосов
/ 01 марта 2012

Вы используете косые черты в своих путях к файлам, которые могут не работать в зависимости от используемой платформы.

Используйте метод Path.Combine для объединения пути и имени файла, он будет использовать разделитель пути, правильный для файловой системы:

string sold = Path.Combine(Application.StartupPath, "totalsold" + username);
if (File.Exists(sold)) {
  suma = new List<String>(File.ReadAllLines(sold));
}
0 голосов
/ 01 марта 2012

Вы закрываете файл?Запись в файлы может происходить не сразу, так как, вероятно, и .NET, и ОС кэшируют и, следовательно, задерживают запись.Файл должен появиться сразу после открытия StreamWriter.

Для кратковременного использования файла (например, для написания материала и последующего его закрытия) вам обязательно следует использовать оператор using:

using (StreamWriter vanzare = new StreamWriter(...)) {
   vanzare.WriteLine("Hello World");
}

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

Если вам нужно оставить файл открытым дольшеодин метод, то, конечно, вы должны сделать это вручную.Убедитесь, что когда вам больше не нужны StreamWriter (и другие IDisposable s), вы вызываете для них метод Dispose().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...