Потоки (stream) и файлы (file) в C# - Учим Шарп #16

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 ธ.ค. 2024

ความคิดเห็น •

  • @CODEBLOG
    @CODEBLOG  5 ปีที่แล้ว +13

    На этом занятии мы познакомимся с основными возможностями языка программирования C# для работы с потоками (stream) и наиболее часто используемой их разновидностью для работы с файлами (FileStream). Научимся безопасно работать с потоками с использованием конструкций try/catch/finally и using. Также поговорим про кодировки.

  • @Alexander-xd8on
    @Alexander-xd8on 11 หลายเดือนก่อน +3

    Пишу из 2024 года)) Спасибо тебе за эти стримы!!! Очень хорошая подача материала!!!

  • @LegoBuilderStudio
    @LegoBuilderStudio 4 ปีที่แล้ว +13

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

  • @termineye111
    @termineye111 ปีที่แล้ว +4

    Содержание
    Начало (Устройство компьютера) 3:36
    Файлы 5:15
    Стрим 10:32
    Переход к практике 15:32
    как читать не весь файл 58:32

  • @mehaletz
    @mehaletz 4 ปีที่แล้ว +1

    Пацаны вообще ребята . Классно ,Особенно этот в белом . Класс , умеете могёте.! Спасибо за четкие обьяснения ,

  • @Brovenko
    @Brovenko 4 ปีที่แล้ว +2

    Отлично и понятно объясняешь на различных бытовых примерах!!!! Учусь с нуля и пока все понятно и ясно!

  • @АнтонЛебедев-н1н
    @АнтонЛебедев-н1н ปีที่แล้ว

    Мужик, спасибо огромное, теперь понимаю че это за юзинги и как работать с файлами на практике!

  • @АлексейСбродов-у3м
    @АлексейСбродов-у3м 4 ปีที่แล้ว +4

    Спасибо, Вадим! Только благодаря тебе я стал понимать эту тему потоков. Ты реально классно объясняешь!

  • @stanlygetz9616
    @stanlygetz9616 5 ปีที่แล้ว +2

    Случайно нашёл Ваш канал!Очень круто объясняете и уже мне помогли!Спасибо за Ваш труд!

    • @CODEBLOG
      @CODEBLOG  5 ปีที่แล้ว

      Рад помочь )

  • @ДимаУсенков-б2р
    @ДимаУсенков-б2р 3 ปีที่แล้ว

    Спасибо за твои уроки. Ты меня нереально выручил.

  • @yuliyazag
    @yuliyazag ปีที่แล้ว

    спасибо, что стрим с чатом сохранили

  • @Kindergarden-fp6eo
    @Kindergarden-fp6eo ปีที่แล้ว

    спасибо за уроки

  • @ЛевТолстой-ф4р
    @ЛевТолстой-ф4р 4 ปีที่แล้ว

    все круто спасибо, делал сам запись и чтение, задолбался с чтением и записью построчно, все сделал через циклы, а оказалось намного проще.(запомню и в след раз сделаю этим способом )

  • @grigoriyvs
    @grigoriyvs 4 ปีที่แล้ว +7

    Завтра два года этому видео, а я только вчера решил посмотреть весь курс, спасибо, польза есть

  • @mastervolodsobeck5176
    @mastervolodsobeck5176 4 ปีที่แล้ว +1

    Да прибудет с тобой сила кода и старина С# вовеки, фминь!

  • @leonidtokaev9378
    @leonidtokaev9378 4 ปีที่แล้ว +4

    Спасибо! Отлично объясняешь, редко такое встретишь на самом деле. У меня вопрос/идея возникла. Каким образом я могу организовать работу с одним файлом(чтение / запись) с двух разных экземпляров моей программы? Чтобы обращения от экземпляров программы к файлу каким-либо образом становились в очередь или перехватывались промежуточным сервисом, который в свою очередь уже регулирует обращения и отрабатывает команды? Подскажите, пожалуйста, с чего копать начинать?

    • @CODEBLOG
      @CODEBLOG  4 ปีที่แล้ว

      тут как раз тебе нужно или использовать чтение из разных потоков с блокировкой доступа по объекту синхронизации. или использовать очередь )

  • @maestrox8
    @maestrox8 4 ปีที่แล้ว

    Спасибо за уроки😉

  • @cokolol3049
    @cokolol3049 ปีที่แล้ว +1

    37:49

  • @alexelproduction2938
    @alexelproduction2938 4 ปีที่แล้ว +12

    це решотка 😂😂 40:37

  • @igob6618
    @igob6618 3 ปีที่แล้ว

    Спасибо за уроки!) Даже годами позже актуально)

  • @Ислам-э9х3х
    @Ислам-э9х3х 3 ปีที่แล้ว +1

    спасибо большое за курс! не подскажите, где найти найти ссылку на чат в телеге в котором можно пообщаться с другими участниками курса?

  • @BrostylesCat
    @BrostylesCat 2 ปีที่แล้ว +1

    обажаю)

  • @areeoff
    @areeoff 2 ปีที่แล้ว

    Здравствуйте. Подскажите пожалуйста, почему так происходит в описанной ситуации - есть метод, который как аргумент принимает обьект класса ,а далее выводит его свойство. Почему я могу при обращении к методу в аргументы задать новый обьект без сохранения и метод сработает без ошибки?(Аргумент при вызове метода - (new Class1("Alpaca") ,где Class1 содержит конструктор, записывающий строку "Alpaca" в свойство.)

  • @TOTGAD
    @TOTGAD 4 ปีที่แล้ว +16

    Видео идёт 76 минут. Поставьте 2х скорость воспроизведения. Не за что.) (38 минут к жизни)

    • @ИванПлатонов-с2ц
      @ИванПлатонов-с2ц 4 ปีที่แล้ว

      я на х4 смотрю)

    • @АристархЗловредович
      @АристархЗловредович 4 ปีที่แล้ว +4

      Жаль ответы на тупые коментарии в онлайн чате никуда не убрать , мешают очень

    • @nikitaisyuk8630
      @nikitaisyuk8630 4 ปีที่แล้ว

      @@АристархЗловредович можно скачать видео и обрезать его, если блок с комментариями так сильно мешает. (без негатива)

    • @АристархЗловредович
      @АристархЗловредович 4 ปีที่แล้ว +1

      @@nikitaisyuk8630 Да нет никакого негатива , просто коменты там в основном не потеме и отвлекают автора видно же

  • @АлексДжаванов
    @АлексДжаванов 5 ปีที่แล้ว +1

    Уважаемый вадим а может подсказать почему всплывает данное исключение ?
    yadi.sk/i/CoR_V_MVC4WX9g
    Делаю все точно как у вас но в ответ получаю:
    "Процесс не может получить доступ к файлу "C:\Users\ALEX\Downloads\__Test\bl.txt", так как этот файл используется другим процессом."

    • @АлексДжаванов
      @АлексДжаванов 5 ปีที่แล้ว

      Вадим спасибо я разобрался пусть останется как головоломка для других пытливых умов) ток не говири ответ )))

    • @АлексДжаванов
      @АлексДжаванов 5 ปีที่แล้ว

      Код для пытливых умов. интересно надет кто то в чем проблема была или нет ))
      using System.IO;
      using System.Text;
      namespace _16_Stream_fale
      {
      class Program
      {
      static void Main(string[] args)
      {
      using (var sw = new StreamWriter("C:\\Users\\ALEX\\Downloads\\__Test\\bl.txt", true, Encoding.ASCII))
      {
      int i = 0;
      while (i < 100)
      {
      sw.WriteLine("Hello");
      sw.WriteLine("Hello, Moskali");
      sw.WriteLine("Привет");
      sw.WriteLine(i);
      i++;
      }
      using (var sr = new StreamReader("C:\\Users\\ALEX\\Downloads\\__Test\\bl.txt", Encoding.UTF8))
      {
      var text = sr.ReadToEnd();
      System.Console.WriteLine(text);
      }
      System.Console.ReadLine();
      }
      }
      }
      }

    • @CODEBLOG
      @CODEBLOG  5 ปีที่แล้ว

      Ох, ошибка конечно у тебя весёлая. Блокирующий доступ к внешнему ресурсу еще никто не отменял )))

  • @АндрейЛолкин-о5щ
    @АндрейЛолкин-о5щ 5 ปีที่แล้ว +3

    У нас скоро будет 2020 )) привет тебе из будущего ))

    • @CODEBLOG
      @CODEBLOG  5 ปีที่แล้ว +1

      Спасибо и тебе привет )

  • @minoddein7205
    @minoddein7205 4 ปีที่แล้ว

    У чела была такая же проблема с закрытием потока,после создания файла,он просил критики в сторону своего кода,ему сказали,что выносить библиотечный класс в отдельный с таким же функционалом - скверный стиль написания кода(является ошибкой проектирования).Что можно с этим сделать?В Main и Switch напрямую писать,вроде бы,тоже не вариант.Если сравнивать с switch ,то в классе он выглядит как-то читабельнее.
    class Program
    {
    static void Main(string[] args)
    {
    while (true)
    {
    Console.WriteLine("Choose the operation:
    1)Create file
    2)Delete file
    3)Write in file
    4)Read file");
    switch (Console.ReadKey().Key)
    {
    case ConsoleKey.D1:
    {
    Console.WriteLine("Enter the path and name of file:");
    var path = Console.ReadLine();
    FileOperation.CreateFile(path);
    }
    break;
    case ConsoleKey.D2:
    {
    Console.WriteLine("Enter the path and name of file:");
    var path = Console.ReadLine();
    FileOperation.DeleteFile(path);
    }
    break;
    case ConsoleKey.D3:
    {
    Console.WriteLine("Enter the path and name of file:");
    var path = Console.ReadLine();
    Console.WriteLine("Enter the data in file:");
    var data = Console.ReadLine();
    FileOperation.WriteData(path,data);
    }
    break;
    case ConsoleKey.D4:
    {
    Console.WriteLine("Enter the path and name of file:");
    var path = Console.ReadLine();
    FileOperation.ReadData(path);
    }
    break;
    }
    Console.WriteLine("Close programm?");
    var answer = Console.ReadLine();
    if(answer.ToLower() == "yes")
    {
    break;
    }
    }
    }
    }
    static class FileOperation
    {
    public static bool CreateFile(string path)
    {
    FileInfo file = new FileInfo(path);
    if (file.Exists)
    {
    Console.WriteLine("File already exists");
    }
    else
    {
    file.Create().Close();
    Console.WriteLine("File creation is successfuly...");
    }
    return true;
    }

    public static bool DeleteFile(string path)
    {
    if (File.Exists(path))
    {
    File.Delete(path);
    Console.WriteLine("File deleted...");
    }
    else
    {
    Console.WriteLine("File doesn`t exist");
    }
    return true;
    }
    public static bool WriteData(string path,string data)
    {
    if (File.Exists(path))
    {
    using(var write_data_in_file = new StreamWriter(path, true, Encoding.UTF8))
    {
    write_data_in_file.WriteLine(data);
    write_data_in_file.Dispose();
    }
    }
    else
    {
    Console.WriteLine("Incorrect path or file doesn`t exist");
    }
    return true;
    }
    public static bool ReadData(string path)
    {
    if (File.Exists(path))
    {
    using(var read_data_in_file = new StreamReader(path, Encoding.UTF8))
    {
    Console.WriteLine(read_data_in_file.ReadToEnd());
    read_data_in_file.Dispose();
    }
    }
    else
    {
    Console.WriteLine("Incorrect path or file doesn`t exist");
    }
    return true;
    }
    }

  • @yrikfirex3886
    @yrikfirex3886 4 ปีที่แล้ว

    Спасибо огромное я щяс пишу игру морской бой, программирование учу 3 месяцев и я столкнулся с проблемой когда пользователь вводит свре имя при следующим запуске программы оно не сохраняется тв ы мне помог спасибо огромное!!!!

  • @archivfan
    @archivfan 4 ปีที่แล้ว

    Спасибо за урок, но можете подсказать как к оператору стринг применить ||
    А то в противном сучили код раздувается
    else if (bay.ToLower() == "12" || "21")
    {
    bay = "Яблок и Бананов";
    doxod = (fruit22 * result) + (fruit.Price * result);
    }

    • @jeb_7749
      @jeb_7749 4 ปีที่แล้ว +2

      bay.ToLower() == "12" || bay.ToLower() == "21"

  • @ivanomelchenko1895
    @ivanomelchenko1895 3 ปีที่แล้ว

    у меня вопрос а где часть урока про потоки

  • @Em-iy7hb
    @Em-iy7hb 5 ปีที่แล้ว +1

    Кстати, чтобы постоянно не ходит через Проводник для чтения и удаления созданного файл, можно в Solution Explorer, нажать кнопку "Show All Files", что позволит добраться до файла, прочитать и удалить его прям из VS.

  • @crazist3325
    @crazist3325 3 ปีที่แล้ว

    Аааа еееее

  • @АлексейОрлов-щ4ж
    @АлексейОрлов-щ4ж 6 ปีที่แล้ว

    Спасибо!)

  • @JustPlayingBroGD
    @JustPlayingBroGD 6 ปีที่แล้ว

    А если читать весь файл через *var list = File.ReadAllLines("path").ToList();* работать с листом, и записывать обратно, если надо *File.WriteAllLines("path", list);* У такого подхода есть минусы? (файлы < 1mb)

  • @arsenskliarenko9623
    @arsenskliarenko9623 5 ปีที่แล้ว

    Привет, отличные стримы)) Планируешь питон начинать ?

    • @CODEBLOG
      @CODEBLOG  5 ปีที่แล้ว

      В следующем году планирую

  • @yura_zherdiev
    @yura_zherdiev 4 ปีที่แล้ว

    А вот если я записываю в файл переменную, могу ли я потом считывать из этого файла именно эту переменую?

    • @phat80
      @phat80 4 ปีที่แล้ว

      Можешь. Можешь вообще все что угодно записать, а потом считать.

  • @montykay6003
    @montykay6003 5 ปีที่แล้ว +2

    может кто рассказать как читать текст из файлов из расширением .docx?

    • @CODEBLOG
      @CODEBLOG  5 ปีที่แล้ว +1

      Для работы с word и excel есть специальная библиотека. Interop вроде бы называется. Сейчас скину ссылку почитать

    • @CODEBLOG
      @CODEBLOG  5 ปีที่แล้ว +1

      docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/interop/walkthrough-office-programming

    • @montykay6003
      @montykay6003 5 ปีที่แล้ว

      @@CODEBLOG огромное спасибо

  • @Бойправ-ж8ы
    @Бойправ-ж8ы 6 หลายเดือนก่อน

    в винформ всё это не работает. Выдаёт ошибку, что не может преобразовать чар в стринг. sreamreadline. Вообще программировать в консоли, когда есть винформ - это средневековье.

  • @ildarilyasov9338
    @ildarilyasov9338 3 ปีที่แล้ว

    Как удалять строки в файле

  • @icecril8677
    @icecril8677 6 หลายเดือนก่อน

    Я один чуть от ора со стула не улетел? когда пришёл донат и там Ц Решётка, одни на змее программируют мы на Ц решётке

  • @minoddein7205
    @minoddein7205 5 ปีที่แล้ว

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

    • @CODEBLOG
      @CODEBLOG  5 ปีที่แล้ว

      Очень рад, что помог. И да, на ошибках учатся, это нормально )

    • @yrikfirex3886
      @yrikfirex3886 4 ปีที่แล้ว

      Похожая история с игрой морской бой я там здела чтоб пользователь вводил свое имя и столкнулся с проблемой что ися не сохраняется это видео мне очень помогле спасибо тебе огромное!!!!!!!!! Ё!

  • @armanimamzarov5750
    @armanimamzarov5750 ปีที่แล้ว

    смотрю это видео в 22.12.2023

  • @kurnakovv
    @kurnakovv 5 ปีที่แล้ว

    Привет. Ребят когда делал дз выскакивает ошибка. даже не знаю что не так. подскажите пожалуйста. вот код:
    using System;
    using System.IO;
    using System.Text;
    namespace File.DZ
    {
    class Program
    {
    static void Main(string[] args)
    {
    Console.OutputEncoding = Encoding.UTF8;
    Console.WriteLine("Введите ваше имя:");
    var Name = Console.ReadLine();
    using (var sw = new StreamWriter("Профиль человека.txt", true, Encoding.UTF8))
    {
    sw.WriteLine(Name);
    }
    }
    }
    }

    • @CODEBLOG
      @CODEBLOG  5 ปีที่แล้ว

      А почему само сообщение об ошибке не скинул?

    • @CODEBLOG
      @CODEBLOG  5 ปีที่แล้ว

      И у меня вообще ни какой ошибки нет, все выполнилось корректно

    • @kurnakovv
      @kurnakovv 5 ปีที่แล้ว

      @@CODEBLOG решил создать новый файл и все заработало))) я не знаю как это работает) но код точно такой же прям

  • @saaanpj1568
    @saaanpj1568 5 ปีที่แล้ว

    А как сделать чтобы он мог читать еще и русские символы? (Не только английские)

    • @CODEBLOG
      @CODEBLOG  5 ปีที่แล้ว

      использовать подходящую кодировку (и желательно не ошибаться при преобразовании)

  • @yriktop5756
    @yriktop5756 4 ปีที่แล้ว

    1 15

  • @NikitaMalov
    @NikitaMalov 5 ปีที่แล้ว

    Как сделать ,чтобы по команде читало данные из файла .Вот мой код using Ext.Net;
    using OpenTK.Input;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Input;
    namespace StreamAndFile
    {
    class Program
    {
    static void Main(string[] args)
    {
    Console.WriteLine("Type your Name");
    var Name = Console.ReadLine();
    using (var sw = new StreamWriter("test.txt"))
    {
    sw.WriteLine(Name);
    }
    Console.ReadKey();
    void processKeyboardInput(KeyboardState state)
    {
    if (state.IsKeyDown(OpenTK.Input.Key.Space))
    {
    using (var sw = new StreamReader("test.txt"))
    {
    sw.ReadToEnd();
    }
    }
    }
    }
    }
    }

    • @atler9865
      @atler9865 4 ปีที่แล้ว

      Разобрался? Или нужна помощь?

  • @ТомараСемёновна-х2и
    @ТомараСемёновна-х2и ปีที่แล้ว

    ♥ Спасибо за видео! Нашел видео с примером создания программы с многопоточностью th-cam.com/video/X5AxuT5tbZ4/w-d-xo.html ☺

  • @ivanomelchenko1895
    @ivanomelchenko1895 3 ปีที่แล้ว

    этот урок должен быть 17 так как прошлый был 16

  • @ivanomelchenko1895
    @ivanomelchenko1895 4 ปีที่แล้ว

    +++

  • @grenadier1653
    @grenadier1653 5 ปีที่แล้ว +1

    Спосеба

  • @phat80
    @phat80 4 ปีที่แล้ว

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

  • @lonchakovav
    @lonchakovav 3 ปีที่แล้ว

    Запись в файл в кодировке Windows-1251:
    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    StreamWriter sw = new StreamWriter("test.txt", false, Encoding.GetEncoding(1251));
    sw.WriteLine("Привет!");

  • @cokolol3049
    @cokolol3049 ปีที่แล้ว +1

    43:15

  • @ivanomelchenko1895
    @ivanomelchenko1895 4 ปีที่แล้ว

    +++