2015-07-16 4 views
-2

Я пытаюсь загрузить файл и содержимое в массив, а затем добавить строку в определенное место в файле. Например:Загрузите файл в массив, затем сохраните его обратно в файл

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

private void addgsc() 
    { 
     string[] lines = System.IO.File.ReadAllLines 
    (modspath + "//maps//_zombiemode_weapons.gsc"); 

     int index = -1; // Where to insert the new line. 

     List<string> newLines = new List<string>(); 
     for (int i = 0; i < lines.Length; i++) 
     { 
      newLines.Add(lines[i]); 
      if (lines[i].Contains("add_zombie_weapon")) 
       index = i + 1; 
     } 

     if (index > -1) 
     { 
      newLines.Insert(index, "test 21"); 
     } 
     string[] rebulidarr = newLines.ToArray(); 
+1

А что на ваш вопрос? – thepirat000

ответ

1

Похоже, существует ряд add_zombie_weapon() линий, и вы хотите добавить что-то в конце этого раздела?

Если так, то попробуйте что-то вроде этого:

private void addgsc() 
    { 
     string file = modspath + "//maps//_zombiemode_weapons.gsc"; 
     List<string> lines = new List<string>(System.IO.File.ReadAllLines(file)); 
     int index = lines.FindLastIndex(item => item.Contains("add_zombie_weapon")); 
     if (index != -1) 
     { 
      lines.Insert(index + 1, "test 21"); 
     } 
     System.IO.File.WriteAllLines(file, lines); 
    } 
+0

OMG СПАСИБО СООО МНОГО :) это работает – user3363294

1

Попробуйте сделать это следующим образом:

var newlines = 
    from line in File.ReadAllLines("source_filename.txt") 
    from newline in new [] 
    { 
     line, 
     line.Contains("add_zombie_weapon") ? "test 21 " : null 
    } 
    where newline != null; 
    select newline; 

File.WriteAllLines("destination_filename.txt", newlines); 
+0

Это отличается от кода OP тем, что код OP только вставляет одну строку '' test 21 ''- после последней строки, содержащей' 'add_zombie_weapon''. Если несколько строк содержат эту строку, ваш код добавит несколько строк «test 21». –

+0

@JimMischel - Ты прав. Я был, помиловал каламбур, прочитывая между строками фактического требования ОП. – Enigmativity

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