2016-03-01 3 views
0

Я пытаюсь загрузить файл в каталог на компьютере пользователя. Я сначала удалить все файлы, мне не нужно, то я получаю файлы для загрузки из файла в Интернете, который выглядит следующим образом:Загрузить файл во время цикла C#

FOLDERNAME | FileName | DownloadLink

Однако это только загрузив первый файл, а цикл работает вечно.

class ModpackFileControl 
{ 
    static string modpackDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "ImperialPVP"); 
    static string userDir = Properties.Settings.Default.userDir; 

    public static void InstallUpdates() 
    { 
     //Delete Files 
     ArrayList infoFiles = new ArrayList(); 
     infoFiles.Add("currentMods.txt"); 
     infoFiles.Add("previousMods.txt"); 
     infoFiles.Add("currentVersion.txt"); 
     infoFiles.Add("latestVersion.txt"); 
     infoFiles.Add("previousVersion.txt"); 
     infoFiles.Add("updateInfo.txt");   

     DirectoryInfo di = new DirectoryInfo(directory); 
     foreach (FileInfo file in di.GetFiles()) 
     { 
      if (!infoFiles.Contains(Convert.ToString(file))) 
      { 
       file.Delete(); 
      } 

     } 
     foreach (DirectoryInfo dir in di.GetDirectories()) 
     { 
      dir.Delete(true); 
     } 

     //Download Files 
     string modpackFilesText = Path.Combine(modpackDir, "modpackFiles.txt"); 

     WebClient webClient = new WebClient(); 
     webClient.DownloadFile("https://dl.dropbox.com/s/lqqvg2fdw9qb989/modpackFiles.txt?dl=0", modpackFilesText); 

     StreamReader modpackFiles = File.OpenText(modpackFilesText); 
     string line = modpackFiles.ReadLine(); 
     while (line != null) 
     { 
      string[] files = line.Split('|'); 

      string folder = files[0]; 
      string file = files[1]; 
      if (!Directory.Exists(Path.Combine(modpackDir, folder))) 
      { 
       Directory.CreateDirectory(Path.Combine(modpackDir, folder)); 
      } 

      string downloadPath = Path.Combine(modpackDir, folder, file); 
      string link = files[2]; 
      webClient.DownloadFile(link, downloadPath); 
     } 

     return; 
    } 
} 
+0

Почему на земле вы удаление файлов? Что делать, если вы удаляете собственные файлы пользователя? – Annabelle

+0

Он не будет удалять собственные файлы пользователя, потому что файлы, которые я удаляю, находятся в определенном каталоге. пример C:/username/appdata/roaming/имя_программы/файлы для удаления –

+0

Мне нужно удалить все текущие файлы в этом каталоге, потому что они могут конфликтовать с будущими файлами, которые я загружаю. –

ответ

1

Вопрос заключается в том, что у вас есть условие line != null для вашего времени цикла, но line устанавливается только перед началом цикла.

Вы, вероятно, хотите что-то вроде этого:

string line = modpackFiles.ReadLine(); 
    while (line != null) 
    { 
    // your existing code here 
    line = modpackFiles.ReadLine(); 
    } 
+0

Работы, спасибо –

Смежные вопросы