Java SE. Урок 31. Потоки ввода вывода (I/O)
ฝัง
- เผยแพร่เมื่อ 5 ม.ค. 2025
- Часто при разработке приложения возникает необходимость в сохранении и извлечении информации из какого либо источника. Для этого используются потоки ввода/вывода, которые представляют собой объекты соответствующих классов. Самые первые классы, появившиеся в Java, связаны с передачей и извлечением последовательности байтов. Эти классы являются потомками абстрактных классов InputStream, OutputStream.
Если речь идет а работе с файлами, то как правило это классы FileInputStream, FileOutputStream. Это если мы говорим о байтовых потоках. Конструкторы данных классов, открывают поток и связывают его с физическим фалом.
Для работы с текстом, с символами, лучше работать с символьными потоками. Эти потоки реализованы от абстрактных классов Reader и Writer.
Класс File. Данный класс используется для работы с файлами и каталогами на внешних носителях. С содержимым файлов данный класс не работает, но он позволяет создавать, удалять файлы, изменять их имя, ограничивать доступ, работать с каталогами и многое другое.
удивляюсь как можно так грамотно рассказывать, никаких слов паразитов и никакой воды, уже как раз эти видео помогают лучше чем книги, спасибо большое!
Спасибо и Вам )
Оооооотличный урок.И голос хорошо ложится в сознание.Так держать.Спасибо за труд))))
один из немногих кто так понятно всё разжовывает
Спасибо
Большое спасибо за доходчивое объяснение!
Кто пришел с JavaRush - привет)))
Прошел джавараш ?
Посмотрел несколько лекций - это одна из лучших где понятно и без воды обьяснили. Единственное что бы подметил:
- с try-with-resources можно и без блока finally и не закрывать потоки, это происходит автоматически
- в цепочках потоков достаточно закрыть только один, чтоб закрылись все
видео было выложено 7 лет назад и тогда наверно еще не было блока try-with-resources. Он был добавлен с 7 версии
@@kransbect7126 да я тоже об этом думал когда писал, но 7-я вышла в 2011 году. Ну не суть, возможно кому-то будет полезным комментарий, я не пытался "умничать")
Очень хороший урок! Спасибо!
Пожалуйста )
Спасибо за урок! Очень полезно и довольно хорошо объяснено!
Зашел ради метода который : "Мы рассматривать не будем" xD.
Александр! Спасибо Вам большое, за материал.. .очень полезно, даже спустя 4 года....хотелось бы увидеть новые видео на Вашем канала... даже есть тема - Клиент-Серверные приложения (библиотеки io, nio, netty)...
Объяснение просто супер!!!
Разобрался полностью только после изучения других способов чтения с файла. Мне кажется, рано вы эту тему затронули, но спасибо за уроки! Жаль, что у вас сейчас времени нет на уроки.
Кодировка UTF-8 не работает. Все русские символы заменяются вопросами. А кодировка windows-1251 работает
Отличное видео, помогло разобраться.
Спасибо за видео, очень доходчиво)
Спасибо тебе, Чуев Александр!!!
Большое спасибо за видео, очень хорошо обьяснили.
Классно. Лайк)
не лучше ли использовать try with resources, вместо того, чтобы закрывать поток в блоке finally?
Try with resources не так давно появилось, а видео достаточно старое. Я и сам задался этим вопросом.
При создании обьекта класса FileOutputStream, в конструктор можно кроме пути к файлу для записи можно передать так же и boolean'овское true и тогда в файл так же будет дозаписываться информация, а не затираться.
И уже можно не использовать класс FileWriter
Хотел написать, полистал коменты, а меня опередили!)
Спасибо за видео!
Братик а можешь после каждого видео оставлять комментарий в виде задачи чтобы потом закреплять навык самостоятельно
Добрый день
А разве FileOutputStream не имеет конструктора с boolean append ?
Хороший урок, все понятно объясняет)
Thanks a million!!!😊😊😊
Спасибо, очень понятное объяснение!
Красавчик
А как создать новый файл? (В коде, не в проводнике)
Здравствуйте, у меня запустилось нормально на cp1251, а на UTF-8 сплошные нули, может в своей IDE не выставил кодировки правильно?
Здравствуйте, вполне может быть. В Eclipse, если не ошибаюсь, по умолчанию стоит cp1251.
Вот именно, все сходится, спасибо)
и мне помогло
кодировка ASCII читается как АСКИ, а не А-ЭС-ЦЕ-ДВА
Спасибо большое! Всё доступно объяснили
Александр а для изображений этот метод действует. Могли бы вы посвятить видео о том как можно обработать изображение.
Круто
сделал все как по видео, но почему та все равно русские буквы не читаются, а вместо них знаки вопроса, может кодировку какую нибудь другую надо?
А почему вы не используете try with resources в своих примерах? это же проще и код читается лучше.
Согласен!
Уже даже и не вспомню почему ))
Спасибо тебе добрый человек!!!
И ещё
У вас на 9:38 IDEA подсказывает, что fis.close() может выкинуть NullPointerException, так как мы чуть выше присвоили этому объекту null. Как в этом случае избежать этого исключения ? Вводить дополнительно проверку на null ?
Да, все верно
@@followthewhiterabbit6924 спасибо
Орнул с АСЦ2
Главное что всем понятно было.
спасибо большое
Очень интересно
И еще, наверняка вы раньше объясняли, почему правильно объявлять fileOutputStream до фактической инициализации, где это можно увидеть?
Очень нравятся Ваши видеоуроки, Александр! Когда следующее видео?
Спасибо ) Скорее всего уже на следующей неделе.
Александр, хочу Вас попросить (если, конечно, найдете время и желание) "раскрыть тему" Многопоточность. Спасибо!
Планирую записать видео, но пока совсем нет времени
Спасибо большое Вам!
2 года уже прошло, но все же, чтобы файл точно записывался filewriterом надо использовать flush()
кто объяснит механику flush?
Спасибо большое!
А для чего необходима такая запись c =null?:
FileInputStream fis=null;
fis=new FileInputStream(path)
чтобы переменная fis была видна за пределами блока try, в частности, чтоб закрыть поток.
Здравствуй "АВТОР" !!! Я пересмотрел твой курс, очень зачетный. Спасибо огромное. Есть один вопрос: Как использовать
использовать команды клавиш на Макбуке, особенно "alt insert" в IntelliJ IDEA, эта команда у меня не работает.
Как настроить IntelliJ IDEA правильно, подскажи.
СПАСИБО заранее !!!
Спасибо и Вам )
Если честно не помню, что это команда делает )
Вот тут можно список комбинаций посмотреть:
www.jetbrains.com/help/rider/Reference_Keymap_Rider_OSX.html#find
и на русском
otus.ru/nest/post/494/
есть уроки про потоки?(Thread)
У меня при выводе сообщения "Hello Java Привет Мир" Hello Java выводится, а Привет Мир выводится в виде ромбиков черных со знаками вопросов это уже после назначения кодировки UTF-8, я так понимаю дело с кодировками по умолчанию в JDK? Буду благодарен, если объясните как настроить
CP1251 - вот верная, а не UTF-8
Great! Thanks, White rabbit!
И Вам ещё раз спасибо за обратную связь! Приятно осознавать, что проделанная работа была выполнена не зря )
Ваш стиль изложения материала способствует быстрому пониманию. Лаконично, спокойная-уверенная речь, разъяснение возможных ньюансов (возможные ошибки), уточнения по ходу написания кода и даже подсказки по "горячим" клавишам. Это всё что нужно новичку. Если будете и дальше выкладывать видео по JAVA с удовольствием буду изучать. С ув.
Тот самый момент, когда уже закончил задачку со степика, а теперь наткнулся на ее решение при закреплении теории)
Spasibo!
На что вы нажали чтобы посмотреть классы в пакете IO ?
Наводишь на io и на windos это ctrl+b или ctrl+нажать левой кнопкой мыши, на маке вместо ctrl клавиша cmd. Так можно переходить по методам и классам да и переменным в места где они обьявляются и наоборот в места где они используются.
Хочу предложить вам идею : делать уроки - примеры простого использования методов в Классах . Например ,сейчас ищу пример и не могу найти - использвания кодировки и смена её в потоке (InputStreamReader).
Вечер добрый! Александр, спасибо большое за урок! Извините, Вы говорили, что в файл не дописывалась информация, а после добавления блока final все заработало. Скажите, пожалуйста, Вы тогда просто добавили блок final без закрытия потока и закрывали его в теле блока try, либо закрывали поток в блоке final?
Заговорился и не договорил...
Конечно не просто блок final, а еще и закрытие потока, в нем.
Пожалуйста )
Не совсем понимаю для чего в конце закрывать потоки в finally?
может кто объяснит ?:
В данном случае, для того чтобы "разорвать связь" между файлом и нашим приложение. Другими словами освободить ресурсы.
Спасибо
Отлично обьясняете,хотел бы по интересоваться,случайно не будете выпускать видео уроки по Java2ee ? очень бы хотел с ваших уст послушать
Спасибо, будет!) Только ещё SE надо добить )
будем ждать)) а так палец верх вам!
Cпасибо!!!
Рахмет!
спасибо)
печально конечно, что канал бросили
запустилась с аски ср1251
Многое поверхностно описано, не показано несколько ключевых конструкций...
Java library выучить невозможно. Слишком много кода там и всё это запомнить нереально.... даже за 20лет
Учить и не надо )) Надо знать, что можно делать и как это делать, а что нельзя. Ну и конечно google в помощь ))
очень долго и нудно, как я люблю
на 2024 год инфа устарела
чувак, ты крут!
System.out.println ("Thank you!")
Спасибо вам огромное!
Спасибо Вам!)