Advertisement
Lusien_Lashans

Работа с файлом

Jun 3rd, 2018
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.99 KB | None | 0 0
  1. var text = File.ReadAllText("in.txt").Split(new char[] { ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
  2.             File.Delete("out.txt");
  3.             File.AppendAllText("out.txt", "Y\n");
  4.             File.AppendAllText("out.txt", (node.y + 1) + " " + (node.x + 1) + "\n");
  5.             File.WriteAllText("out.txt", "N");
  6.  
  7. public static void Main()
  8. {
  9.     // Запись текста в файл:
  10.     File.WriteAllText("1.txt", "Hello, world!");
  11.  
  12.     // Путь относительно "текущей директории", которую можно узнать так:
  13.     Console.WriteLine(Environment.CurrentDirectory);
  14.     // Обычно это директория, в которой была запущена ваша программа
  15.  
  16.     // А размещение запущенного exe-файла можно узнать так:
  17.     Console.WriteLine(Assembly.GetExecutingAssembly().Location);
  18.  
  19.     // Сформировать абсолютный путь по относительному можно так:
  20.     Console.WriteLine(Path.Combine(Environment.CurrentDirectory, "1.txt"));
  21.  
  22.     // Записать строки в файл,
  23.     // разделив их символом конца строки (\r\n для Windows и \n для Linux и MacOS)
  24.     File.WriteAllLines("2.txt", new[] {"Hello", "world"});
  25.  
  26.     // Записать в файл массив байтов в бинарном виде:
  27.     File.WriteAllBytes("3.dat", new byte[10240]);
  28.  
  29.     // Чтение данных из файла
  30.     string text = File.ReadAllText("1.txt");
  31.     string[] lines = File.ReadAllLines("2.txt");
  32.     byte[] bytes = File.ReadAllBytes("3.dat");
  33.  
  34.     // Все файлы в текущей директории (точка в пути означает текущую директорию)
  35.     foreach (var file in Directory.GetFiles("."))
  36.         Console.WriteLine(file);
  37. }
  38.  
  39. public static void Main()
  40. {
  41.     //StringBuilder - это класс, представляющий собой изменяемую строку
  42.     var builder = new StringBuilder();
  43.  
  44.     //Он содержит различные методы вставки, добавления, удаления и т.д.
  45.     builder.Append("Some ");
  46.     builder.Append("string ");
  47.     builder.Append("#15");
  48.     builder.Remove(0, 5);
  49.     builder.Insert(0, "test ");
  50.  
  51.     //Также можно манипулировать отдельными символами
  52.     builder[0] = 'T';
  53.  
  54.     //StringBuilder можно превратить в строку
  55.     var str = builder.ToString();
  56.     Console.WriteLine(str);
  57.  
  58.     //Не нужно полностью заменять строки на StringBuilder,
  59.     //Только в тех случаях, когда действительно выполняется много преобразований
  60. }
  61.  
  62. static void WrongConcatenation()
  63. {
  64.     //Если нам нужно сконкатенировать большое количество строк
  65.     //то конкатенация "в лоб" потребует очень много памяти в куче,
  66.     //и будет работать медленно
  67.  
  68.     var str = "";
  69.  
  70.     for (int i = 0; i < 50000; i++)
  71.     {
  72.         str += i.ToString() + ", ";
  73.     }
  74. }
  75.  
  76. static void RightConcatenation()
  77. {
  78.     //Конкатенация со StringBuilder работает в сотни раз быстрее
  79.     //Однако, в случае 3-4 строк вы не почувствуете разницы, поэтому
  80.     //в этом случае пользоваться StringBuilder не обязательно
  81.     var builder = new StringBuilder();
  82.  
  83.     for (int i = 0; i < 50000; i++)
  84.     {
  85.         builder.Append(i);
  86.         builder.Append(", ");
  87.     }
  88. }
  89.  
  90. public static void Main2()
  91. {
  92.     var watch = new Stopwatch();
  93.     watch.Start();
  94.     WrongConcatenation();
  95.     watch.Stop();
  96.     Console.WriteLine(watch.ElapsedMilliseconds);
  97.  
  98.     watch = new Stopwatch();
  99.     watch.Start();
  100.     RightConcatenation();
  101.     watch.Stop();
  102.     Console.WriteLine(watch.ElapsedMilliseconds);
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement