там в обработке ошибки имеет смысл поставить логическое или между файлнотфаунд и айо эксепшенами. это и предлагала сделать идея. спс, хороший урок, как всегда.
Поправка - IDE не предлагала трансформировать 2 catch блока в multi-catch блок, так как FileNotFoundException наследуется от IOException. Символ, которым разделяются исключения в multi-catch блоке называется vertical bar и не является логическим "или" docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html
Ты топ! Сколько видео просмотрено, сколько джаварашей и прочих перекодировано, но только ты помог мне разобраться со множеством вопросов. Моё почтение и моя подписка обеспечены (:
Спасибо! Скоро выйдет мой курс "Продвинутая Java". Будут затронуты такие темы как коллекции, многопоточность, тестирование и многое другое. Следите за обновлениями на канале :)
А как узнать сколько объектов в файле? В примере мы точно знаем, что их 2, потому и создаем 2 скастованных объекта типа Person. А если бы мы не знали кол-ва объектов, которых надо считать?? Подскажите, пжста
Спасибо большое. Пересматриваю уже и возник вопрос. Вы закрываете объекты FileInputStream/FileOutputStream, а почему не закрываете сразу после этого соответствующие объекты ObjectInputStream/ObjectOutputStream?
Думаю вы уже разобрались, так что пишу на будущее... Он закрывает не FileInputStream/FileOutputStream, а ObjectInputStream/ObjectOutputStream... Object поток оборачивает Файловый поток, и когда закрывается внешний поток, внутренний тоже будет закрыт, надеюсь я правильно понял)
здорова, заметил ты тут под каждым видео коммент оставляешь. и теперь перед тем как посмотреть видео смотрю оставил ли тут коммент или нет. впереди еще десяток уроков и надеюсь, что ты там тоже откоментил а то я не знаю
@@Holdy_Couldy привет . Всегда ставлю комментарии чтобы об авторе многие узнали он очень хорошо объясняет, но начал учить другой язык, java не зашла ))) удачи в обучении друг
@@Holdy_Couldy я работал в техподдержке сказали учи 1с мы тебя повысим до программиста, я забросил начал учить 1с и понял что не моё от слова совсем ))) потом наткнулся на Скуторенко и понял что я влюбился в этот язык swift далее после Скуторенко нашел ребят с сайта Swift Books, и сейчас смотрю их уроки. Конечно многое не понятно это нормально главное делать понимание придет))) но мне нравится IOS
Спасибо за урок. Есть вопрос. Объясните, пожалуйста, каким образом у нас "подхватился" переопределённый метод toString(). Где и как именно мы его вызвали в классе ReadObject? Спасибо.
При вызове System.out.println над объектом (класс Object), всегда срабатывает его внутренний метод toString(), который был переопределён ранее. Из оф. документации: public String toString() Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.
Спасибо за видео. Есть вопрос: в Person1 и Person2 мы дважды "одинаково" читаем из объекта ObjectInputStream, но откуда java знает, что в Person2 нужно прочитать именно второй объект, а не первый?
Возможно название метода "readObject()" не совсем точно отражает суть происходящего. Чтобы стало понятно, представьте, что метод называется "readNextObject()". В реализации ObjectInputStream есть "указатель", который "смотрит" на текущий объект. Вызов метода readObject() сдвигает этот указатель так, чтобы он смотрел на следующий объект в файле. Если вам вдруг надо два раза пройтись и десериализовать объекты из файла, вы всегда можете создать второй объект ObjectInputStream и его указатель опять будет смотреть на первый объект в файле.
@@alishevN как узнать сколько объектов в файлике? тут мы знаем, что их 2 и создали 2 переменные типа Person. А если бы не знали? Как тогда считать (десериализовать) все файлы, не зная их кол-ва?
@@alekseyfrozis937 наверное зависит от задачи можно например в начало файла записать сколько там объектов лежит или читать пока не возникнет исключения типа "обнаружен конец файла" или еще как то
Объясните кто нибудь пожалуйста зачем мы пишем эту строку , если можем обойтись без нее, и для чего она нужна?public String toString() { return id + ":" + name;
Пересмотри 24 урок про объекты и метод toString, думаю сразу прозреешь, но попробую объяснить. Методом toString ты создаешь инструкцию записи данных объекта. Этот метод он всегда вызывается скрыто у объекта, поэтому если ты удалишь этот метод и попробуешь написать System.out,println(person1), а на самом деле комп видит System.out,println(person1.toString()) с пустым методом toString(), то получишь хэш код - Person@5a2e4553, а создавая этот метод, ты даешь понять компьютеру что тебе нужно записать его ид и имя. Надеюсь это именно так, и я хоть немного дал понять, сам только второй месяц учусь.
И я так и не понял зачем нам два геттера которые мы нигде не вызываем.Тем более когда есть переопределенный метод toString,выполняющий по сути ту же функцию.
тк их использует ois и oos. Закрывая внешний поток, должен закрываться внутренний в том числе. Также выше был коммент, что закрывать потоки надо в блоке finally или, скорее всего, try с ресурсами тоже может решить этот вопрос
вопрос, в ReadObject когда считывались обе персоны, как система определила, что персон1 это все данные с персон1 в WriteObject? Как разделялись обе персоны правильно?
Хм... а если в значениях объекта будет null? Как проверку правильно сделать? Я пробовал if null else но не прокатывает. Все равно null сериализует, а при загрузке ошибку выдает.
@@МунирЗикруллаев ту стринг - он же в классе пёрсон. Его же переопределили. он работает каждый раз, когда нужно представить объект в виде строки (например, если в соут положить объект пёрсон1 - джава знает как отобразить этот объект, потому что мы в классе пёрсон "изобразили" отображение объекта)
Задам вопрос, пересмотрел все комменты нет такого вопроса. Я все делал по Вашему коду, но решил ID инкрементировать в конструкторе, что б по понятным причинам его не вводить. Так тогда с таким кодом все записывается в файл, но увы не считывается, может дальше в уроках и есть на это ответ, но пока что еще не дошел, вот и спрашиваю. Как можно решить даную проблему? Еще раз благодаою за отличный урок, лайкнул и подписался.
Очень все круто. Но есть вопрос, а если человек который сидит за другим компом. хочет прочитать файл но он не знает ничего о классе Person. Тогда он не сможет создать (Person)ois.readObject(). Как тогда быть?
Мы сериализуем не класс, а именно объект класса. Так что человек за другим компьютером должен у себя иметь класс Person. Причем его класс Person должен полностью совпадать с нашим. Прочитав наш файл, он получит сохраненный объект этого класса.
Почему у меня компилятор выдает следующее? com.company.file.writeandread.Person@5f4da5c3 com.company.file.writeandread.Person@443b7951 Это уже при чтении из файла
@@divergenny один из вариантов такой, и погугли еще "закрытие потоков в java при исключениях" FileInputStream fis = null; ObjectInputStream ois = null; try { fis = new FileInputStream("people.bin"); ois = new ObjectInputStream(fis);
Когда в качестве конструктора для ObjectOutputStream я передаю fos, то в окне лампочки отсутствует пункт "Generalize catch for "java.io.FileNotFoundException" to "java.io.IOException""(prntscr.com/g01ag1). Каким образом мне обойти эту проблему и какая причина того, что у меня нет данного пункта? Старая версия java?(7) Пользуясь моментом, хотел бы поблагодарить вас за столь полезные и информативные видео. Очень рад, что нашёл ваш канал)
Я только не могу понять , почему ты не юзаешь try с ресурсами. А так класс рассказываешь. Жалко , что занялся коммерцией и новый курс платный) За 5 баксов купил бы - 10 уже жалко . кек))
Странно, что вам жалко, что автор занялся коммерцией. Уроки шикарны, подобный труд достоин вознаграждения. Автор не обязан заниматься благотворительностью, к тому же очень много уроков выложено в бесплатном доступе, за что ему огромная благодарность. 10 баксов не такие и большие деньги, тут скорее вопрос приоритетов, куда потратить бабло. Я платный курс приобрела и не разочаровалась.
package FileSave.SaveObject; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; public class SaveObject { public static void main(String[] args) { Person person1 = new Person(1, "Mike"); Person person2 = new Person(2, "Bob"); try { FileOutputStream fos = new FileOutputStream("beople.bin"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(person1); oos.writeObject(person2); oos.close(); } catch (IOException e) { System.out.println("wrong file or some else"); } } } У меня вот так... естественно в файл ничего не записалось, эксепшн не отработал что-ли... Не пойму. Уроки - доступнее материала для понимания не находил!!!
Наверное, написал имя файла с ошибкой - beople.bin, java его создала и записала данные в него. Ты же смотришь свой файл people.bin и, естественно, ничего в нём не видишь.
Флаг = индикатор.
какой Флаг = индикатор.?
@@ОстапЛьвовский интерфейс-маркер, что бы обозначить, что данный класс пренадлежит к чему-то. В данном случае к Серилазизации
Вы просто лучший учитель, всё последовательно и без лишних слов/усложнений. Спасибо вам!
Спасибо большое. Очень доступно! Преподаватель от Бога!
Вы лучший на ютубе по урокам java. Мне всё нравиться. Ваши видосы + статьи + книга = мощь
Отличное, подробное объяснение на простом, понятном примере.
Информация усваивается мгновенно.
Благодарю за труд.
Только не останавливайся, у тебя очень полезные видеоуроки
Единственный на Ютубе кто объясняет очень точно и доходчиво , все четко и детально спасибо вам
Красава, парень!
Доступно объясняешь!
Лучшее объяснение, которое я встречал, спасибо)
_Отличный туториал. Все просто и понятно._
А разве мы не должны закрывать поток в блоке?
finaly{
oos.close()
}
так как в блоке try, может вылететь exception и поток не закроется
Так и есть
Верное уточнение
Более правильно использовать try с ресурсами
на javarush один из пользователей в комментарии оставил ссылку на это видео.
у этого коммента 22 лайка.
я подумал вам стоит знать)
Я как раз оттуда)
уже 69
О, это же был я))
@@einoharanen6828 зря ты так. как сборник задач - jr вполне норм. Теория там конечно не очень объясняется.
83
Раньше в комменте писал тебе, что ты лучший, но сорри...
Ты САМЫЙ ЛУЧШИЙ!!!
Спасибо again))
там в обработке ошибки имеет смысл поставить логическое или между файлнотфаунд и айо эксепшенами. это и предлагала сделать идея. спс, хороший урок, как всегда.
Поправка - IDE не предлагала трансформировать 2 catch блока в multi-catch блок, так как FileNotFoundException наследуется от IOException. Символ, которым разделяются исключения в multi-catch блоке называется vertical bar и не является логическим "или"
docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html
Мульти кэтч, можно было бы использовать тут IOException | ClassNotFoundException только
Супер объяснение, спасибо!
Огромная благодарность, Наиль! Очень четкое объяснение.
7:20 много раз пересмотрел, но не дошло)))
а видео отличные!!Спасибо тебе!
что именно не понятно?
@@Das.Kleine.Krokodil Как ваши успехи?)
Отличное объяснение, спасибо за Ваш труд!
Тупо топ учитель. Идеальное сочетание практики и теории
Ты топ! Сколько видео просмотрено, сколько джаварашей и прочих перекодировано, но только ты помог мне разобраться со множеством вопросов.
Моё почтение и моя подписка обеспечены (:
:)
Потому что все по мелочам розьясняет )
И как Javarush?
давно пора прочитать философию джавы и не тратить время на просмотр видосов которые можно сомтреть в х2 скорости
Большое спасибо за уроки!
лучшее объяснение, что я видел!! спасибо!)
Какой же ты четкий)) все-все понятно. Продолжай в том же духе!)
Спасибо! Скоро выйдет мой курс "Продвинутая Java". Будут затронуты такие темы как коллекции, многопоточность, тестирование и многое другое. Следите за обновлениями на канале :)
javaRussia конечно буду следить) ты единственный по джаве кого я смотрю и на кого подписан)
Спасибо огромное за Ваш труд! Он действительно очень полезен. Посмотрел этот урок и сразу подписался.
лучший лектор
А как узнать сколько объектов в файле? В примере мы точно знаем, что их 2, потому и создаем 2 скастованных объекта типа Person. А если бы мы не знали кол-ва объектов, которых надо считать?? Подскажите, пжста
циклом проходишся по всем возможным файлам, которые могут существовать
@@complexity7032 не совсем лучший вариант. Имхо Лучше завести поля с доп информацией, и с ними работать
Благодарю, просмотрел с интересом!
Замечательное видео все оч понятно
Очень полезное видео, лайк подписка и спасибо
Очень наглядно!! Круто
Это прекрасно.
Большое спасибо!
Спасибо большое!!! Отличное видео!
Все очень доступно, спасибо.
Спасибо огромное @alishev
спасибо большое за курс
Спасибо большое. Пересматриваю уже и возник вопрос.
Вы закрываете объекты FileInputStream/FileOutputStream, а почему не закрываете сразу после этого соответствующие объекты ObjectInputStream/ObjectOutputStream?
Думаю вы уже разобрались, так что пишу на будущее...
Он закрывает не FileInputStream/FileOutputStream, а ObjectInputStream/ObjectOutputStream...
Object поток оборачивает Файловый поток, и когда закрывается внешний поток, внутренний тоже будет закрыт, надеюсь я правильно понял)
@@skt5659 А это работает также с File и Scanner, PrintWriter?
Шикарно объяснил) Спасибо тебе
здорова, заметил ты тут под каждым видео коммент оставляешь. и теперь перед тем как посмотреть видео смотрю оставил ли тут коммент или нет. впереди еще десяток уроков и надеюсь, что ты там тоже откоментил а то я не знаю
@@Holdy_Couldy привет . Всегда ставлю комментарии чтобы об авторе многие узнали он очень хорошо объясняет, но начал учить другой язык, java не зашла ))) удачи в обучении друг
@@ИгорьЧумиков-й5б привет, если не секрет почему не зашла джава и что начал учить и как идет то что ты сейчас учишь?
спасибо и тебе тоже )))
@@Holdy_Couldy я работал в техподдержке сказали учи 1с мы тебя повысим до программиста, я забросил начал учить 1с и понял что не моё от слова совсем ))) потом наткнулся на Скуторенко и понял что я влюбился в этот язык swift далее после Скуторенко нашел ребят с сайта Swift Books, и сейчас смотрю их уроки. Конечно многое не понятно это нормально главное делать понимание придет))) но мне нравится IOS
@@ИгорьЧумиков-й5б о, прикольно)) посмотрим насколько меня хватит, но запал еще вроде есть) еще раз удачи и терпения в обучении)
Спасибо за урок
Спасибо за урок. Есть вопрос. Объясните, пожалуйста, каким образом у нас "подхватился" переопределённый метод toString(). Где и как именно мы его вызвали в классе ReadObject? Спасибо.
При вызове System.out.println над объектом (класс Object), всегда срабатывает его внутренний метод toString(), который был переопределён ранее. Из оф. документации:
public String toString()
Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.
Спасибо за видео. Есть вопрос: в Person1 и Person2 мы дважды "одинаково" читаем из объекта ObjectInputStream, но откуда java знает, что в Person2 нужно прочитать именно второй объект, а не первый?
Возможно название метода "readObject()" не совсем точно отражает суть происходящего. Чтобы стало понятно, представьте, что метод называется "readNextObject()". В реализации ObjectInputStream есть "указатель", который "смотрит" на текущий объект. Вызов метода readObject() сдвигает этот указатель так, чтобы он смотрел на следующий объект в файле.
Если вам вдруг надо два раза пройтись и десериализовать объекты из файла, вы всегда можете создать второй объект ObjectInputStream и его указатель опять будет смотреть на первый объект в файле.
@@alishevN как узнать сколько объектов в файлике? тут мы знаем, что их 2 и создали 2 переменные типа Person. А если бы не знали? Как тогда считать (десериализовать) все файлы, не зная их кол-ва?
@@alekseyfrozis937 очень хороший вопрос!!! На который нет ответа :((((
@@alekseyfrozis937 наверное зависит от задачи
можно например в начало файла записать сколько там объектов лежит
или читать пока не возникнет исключения типа "обнаружен конец файла"
или еще как то
Как посмотреть документацию класса? Я понимаю что есть какая-то комбинация клавиш.
На маке я зажимаю клавишу command. На Windows посмотрите на сайте Intellij Idea.
Спасибо!
CTRL + клик по классу
Объясните кто нибудь пожалуйста зачем мы пишем эту строку , если можем обойтись без нее, и для чего она нужна?public String toString() {
return id + ":" + name;
Пересмотри 24 урок про объекты и метод toString, думаю сразу прозреешь, но попробую объяснить. Методом toString ты создаешь инструкцию записи данных объекта. Этот метод он всегда вызывается скрыто у объекта, поэтому если ты удалишь этот метод и попробуешь написать System.out,println(person1), а на самом деле комп видит System.out,println(person1.toString()) с пустым методом toString(), то получишь хэш код - Person@5a2e4553, а создавая этот метод, ты даешь понять компьютеру что тебе нужно записать его ид и имя. Надеюсь это именно так, и я хоть немного дал понять, сам только второй месяц учусь.
привет. может кто нибудь объяснить, почему объект person1 после прочтения из файла недоступен за блоком try/catch?
из за того что он находятся в фигурных скобках, и только там его видно
т.е. дело не в try/catch
И я так и не понял зачем нам два геттера которые мы нигде не вызываем.Тем более когда есть переопределенный метод toString,выполняющий по сути ту же функцию.
видимо автор сначала что то хотел с ними делать
а так то да, они не нужны в этом примере
А почему мы не закрываем fileinputstream и out.. ?
тк их использует ois и oos. Закрывая внешний поток, должен закрываться внутренний в том числе. Также выше был коммент, что закрывать потоки надо в блоке finally или, скорее всего, try с ресурсами тоже может решить этот вопрос
Кто-нибудь знает как считать объекты из файла, если они добавлялись туда в конец (не один раз, модификатор append: true)?
Спасибо , смотрю твою рекламу. Что бы ты за свои труды получал денежку.
FileInputStream тоже, наверное, над закрыть?
вопрос, в ReadObject когда считывались обе персоны, как система определила, что персон1 это все данные с персон1 в WriteObject? Как разделялись обе персоны правильно?
видимо эту инфу тоже шифрует в файл
Зачем в классе Person создали геттеры, если не воспользовались?
По привычке наверное))
Подскажи как настроить так чтобы в конструкторе класса подсвечивались поля. Спасибо
Спасибо за труд все получилось но ничего не запомнилось.
А почему поток FileInputStream ты закрываешь, а ObjectInputStream - нет?
Это называется цепочка потоков, достаточно закрыть любой из них
Есть вопрос, зачем здесь нужны были геттеры? Если мы их не использовали?
почему в исключении не создать бы файл?
спасибо
Хм... а если в значениях объекта будет null? Как проверку правильно сделать? Я пробовал if null else но не прокатывает. Все равно null сериализует, а при загрузке ошибку выдает.
Что то я не понял, где ты вызвал метод toString, когда читал файл.
Как он сам его вызвал? Объясните плз.
Я тоже не понял. Кто понял?
@@МунирЗикруллаев ту стринг - он же в классе пёрсон. Его же переопределили. он работает каждый раз, когда нужно представить объект в виде строки (например, если в соут положить объект пёрсон1 - джава знает как отобразить этот объект, потому что мы в классе пёрсон "изобразили" отображение объекта)
@@hagabobo88 Привет.
Я сейчас сижу и смеюсь над своим вопросом)
Сейчас я уже работаю джуном😀😀
@@МунирЗикруллаев ну блин, тогда потрать немного своего времени и расскажи про свой путь успеха :)
@@hagabobo88 учился по этому каналу dmdev. Канал топ!
То, что нужно было
Программа работает, но почему у меня файле не ничего
Может поток не закрыл
Thanks a lot!
Один момент-
Почему в writeobject - fos(close), а в ридобджект - ois(close)?
У меня при написании oos.writeObject(person1); ругается что нет такого метода как writeObject! что делать?
как решил проблему?
у меня так было когда с большой буквы написал
Thank you!
спасибо!
Единственный вопрос, который у меня остался после просмотра - почему нельзя поставить лайк дважды?!
клёвый канал, я тоже с джавараш.
огонь!
жаль нельзя два лайка поставить!))
Задам вопрос, пересмотрел все комменты нет такого вопроса. Я все делал по Вашему коду, но решил ID инкрементировать в конструкторе, что б по понятным причинам его не вводить. Так тогда с таким кодом все записывается в файл, но увы не считывается, может дальше в уроках и есть на это ответ, но пока что еще не дошел, вот и спрашиваю. Как можно решить даную проблему? Еще раз благодаою за отличный урок, лайкнул и подписался.
а почему джава по умолчанию не делает калссы сериализуемыми - это связано с какими-либо тратами ресурсов?
Значит надо)
У программистов ничего не бывает просто так
А если бы переменные в классе ReadObjects назывались бы person 3 i person 4? мэйн скачал бы для их полей значение из файла для 1 и 2 персоны?
Да конечно, мы их могли вообще в массив считать
@@AlexShev01 не понятно, напишите, пожалуйста, пример.
Очень все круто. Но есть вопрос, а если человек который сидит за другим компом. хочет прочитать файл но он не знает ничего о классе Person. Тогда он не сможет создать (Person)ois.readObject(). Как тогда быть?
Мы сериализуем не класс, а именно объект класса. Так что человек за другим компьютером должен у себя иметь класс Person. Причем его класс Person должен полностью совпадать с нашим. Прочитав наш файл, он получит сохраненный объект этого класса.
@@alishevN Понял, спасибо.
Почему у меня компилятор выдает следующее?
com.company.file.writeandread.Person@5f4da5c3
com.company.file.writeandread.Person@443b7951
Это уже при чтении из файла
у тебя toString переопределён в классе Person?
@@TheSweetMoloko в этом и была ошибка)
Сейчас людей не id, а QR код)))
Привет! Спасибо за уроки. Вы закрываете потоки в блоке try, но если возникнет исключение то поток закрыт не будет. Не лучше ли закрывать в finally?
Согласен. Лучше в finally.
А как его в finally закрыть если мы с помощью try Catch ловили исключение ? переменная же не будет видна в finally
@@divergenny один из вариантов такой, и погугли еще "закрытие потоков в java при исключениях"
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
fis = new FileInputStream("people.bin");
ois = new ObjectInputStream(fis);
@@divergenny и см урок 47
@@Das.Kleine.Krokodil Спасибо большое
Спс за видос. Есть вопрос. А что если у нас 50 объектов а не два?
foreach в помощь
Лучший
Шикарные уроки!!!! Есть вопрос, почему мы в классе Person переопределяем метод toString, а не создаём новый с другим именем, например getInfo?
потому что это проще и так заложено в java
для сравнения:
System.out.println(person1)
System.out.println(person1.getInfo())
@@Das.Kleine.Krokodil Можно же прсто person1.getinfo(); а в методе getinfo уже будет спрятан println
@@RadioGubitel а если не нужно выводить на экран?
@@Das.Kleine.Krokodil тогда не выводить. Обычно я создаю метод print или printAll если вывести все элементы. А get это геттер.
@@RadioGubitel зачем создавать print если он уже есть
Очень жду ваши уроки! Спасибо вам огромное за них! Подскажите пожалуйста, если не секрет, какую книгу вы могли бы порекомендовать по Java для чтения?
Брюс Эккель - "Философия Java"
Спасибо
Когда в качестве конструктора для ObjectOutputStream я передаю fos, то в окне лампочки отсутствует пункт
"Generalize catch for "java.io.FileNotFoundException" to "java.io.IOException""(prntscr.com/g01ag1). Каким образом мне обойти эту проблему и какая причина того, что у меня нет данного пункта? Старая версия java?(7)
Пользуясь моментом, хотел бы поблагодарить вас за столь полезные и информативные видео. Очень рад, что нашёл ваш канал)
Скорей всего вам надо обновить Intellij Idea.
Спасибо, теперь всё работает
Я только не могу понять , почему ты не юзаешь try с ресурсами.
А так класс рассказываешь.
Жалко , что занялся коммерцией и новый курс платный)
За 5 баксов купил бы - 10 уже жалко . кек))
На уроке 47 рассказывается про try-with-resources.
Странно, что вам жалко, что автор занялся коммерцией. Уроки шикарны, подобный труд достоин вознаграждения. Автор не обязан заниматься благотворительностью, к тому же очень много уроков выложено в бесплатном доступе, за что ему огромная благодарность. 10 баксов не такие и большие деньги, тут скорее вопрос приоритетов, куда потратить бабло. Я платный курс приобрела и не разочаровалась.
@@summerray888 аналогично!
написано все точно знак в знак и ни чего не записывается, файл пустой
Код в студию
Закрой поток @@RedCaviarRus
насколько помню try сам закрывает поток
Не пойму, зачем тут нужны геттеры?
Инкапсуляция? Поля приватные, доступ с другого класса не получить?
оказывается сериализация не сложно совсем
ЗаJava
👍🏻
Еще бы в видео было показано содержимое файла .bin , было бы вообщше супер. Просто в текстовом редакторое открыл бы файл после записи.
Кровь из глаз, смотреть в 2022 году, используя уже Try с ресурсами, вместо этой мути с миллионами строчек кода.
Есть рекомендации, статьи, видео, уроки, книги...?
a zachem nam nujno getteri?? pojalusta otvette!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Здесь они не нужны
♥️
Майк и Боб... Это что, отсылка к Твин Пиксу??
уряяя
package FileSave.SaveObject;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class SaveObject {
public static void main(String[] args) {
Person person1 = new Person(1, "Mike");
Person person2 = new Person(2, "Bob");
try {
FileOutputStream fos = new FileOutputStream("beople.bin");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(person1);
oos.writeObject(person2);
oos.close();
} catch (IOException e) {
System.out.println("wrong file or some else");
}
}
}
У меня вот так... естественно в файл ничего не записалось, эксепшн не отработал что-ли... Не пойму. Уроки - доступнее материала для понимания не находил!!!
Обратите внимание где вы создаете сам файл для хранения данных, в папке src или в корневом каталоге?
beople.bin))
Наверное, написал имя файла с ошибкой - beople.bin, java его создала и записала данные в него. Ты же смотришь свой файл people.bin и, естественно, ничего в нём не видишь.
Thanks a lot!