там в обработке ошибки имеет смысл поставить логическое или между файлнотфаунд и айо эксепшенами. это и предлагала сделать идея. спс, хороший урок, как всегда.
Поправка - IDE не предлагала трансформировать 2 catch блока в multi-catch блок, так как FileNotFoundException наследуется от IOException. Символ, которым разделяются исключения в multi-catch блоке называется vertical bar и не является логическим "или" docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html
А как узнать сколько объектов в файле? В примере мы точно знаем, что их 2, потому и создаем 2 скастованных объекта типа Person. А если бы мы не знали кол-ва объектов, которых надо считать?? Подскажите, пжста
Ты топ! Сколько видео просмотрено, сколько джаварашей и прочих перекодировано, но только ты помог мне разобраться со множеством вопросов. Моё почтение и моя подписка обеспечены (:
Спасибо! Скоро выйдет мой курс "Продвинутая Java". Будут затронуты такие темы как коллекции, многопоточность, тестирование и многое другое. Следите за обновлениями на канале :)
Спасибо большое. Пересматриваю уже и возник вопрос. Вы закрываете объекты FileInputStream/FileOutputStream, а почему не закрываете сразу после этого соответствующие объекты ObjectInputStream/ObjectOutputStream?
Думаю вы уже разобрались, так что пишу на будущее... Он закрывает не FileInputStream/FileOutputStream, а ObjectInputStream/ObjectOutputStream... Object поток оборачивает Файловый поток, и когда закрывается внешний поток, внутренний тоже будет закрыт, надеюсь я правильно понял)
Спасибо за урок. Есть вопрос. Объясните, пожалуйста, каким образом у нас "подхватился" переопределённый метод 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 наверное зависит от задачи можно например в начало файла записать сколько там объектов лежит или читать пока не возникнет исключения типа "обнаружен конец файла" или еще как то
И я так и не понял зачем нам два геттера которые мы нигде не вызываем.Тем более когда есть переопределенный метод toString,выполняющий по сути ту же функцию.
Хм... а если в значениях объекта будет null? Как проверку правильно сделать? Я пробовал if null else но не прокатывает. Все равно null сериализует, а при загрузке ошибку выдает.
вопрос, в ReadObject когда считывались обе персоны, как система определила, что персон1 это все данные с персон1 в WriteObject? Как разделялись обе персоны правильно?
Задам вопрос, пересмотрел все комменты нет такого вопроса. Я все делал по Вашему коду, но решил ID инкрементировать в конструкторе, что б по понятным причинам его не вводить. Так тогда с таким кодом все записывается в файл, но увы не считывается, может дальше в уроках и есть на это ответ, но пока что еще не дошел, вот и спрашиваю. Как можно решить даную проблему? Еще раз благодаою за отличный урок, лайкнул и подписался.
здорова, заметил ты тут под каждым видео коммент оставляешь. и теперь перед тем как посмотреть видео смотрю оставил ли тут коммент или нет. впереди еще десяток уроков и надеюсь, что ты там тоже откоментил а то я не знаю
@@Holdy_Couldy привет . Всегда ставлю комментарии чтобы об авторе многие узнали он очень хорошо объясняет, но начал учить другой язык, java не зашла ))) удачи в обучении друг
@@Holdy_Couldy я работал в техподдержке сказали учи 1с мы тебя повысим до программиста, я забросил начал учить 1с и понял что не моё от слова совсем ))) потом наткнулся на Скуторенко и понял что я влюбился в этот язык swift далее после Скуторенко нашел ребят с сайта Swift Books, и сейчас смотрю их уроки. Конечно многое не понятно это нормально главное делать понимание придет))) но мне нравится IOS
Объясните кто нибудь пожалуйста зачем мы пишем эту строку , если можем обойтись без нее, и для чего она нужна?public String toString() { return id + ":" + name;
Пересмотри 24 урок про объекты и метод toString, думаю сразу прозреешь, но попробую объяснить. Методом toString ты создаешь инструкцию записи данных объекта. Этот метод он всегда вызывается скрыто у объекта, поэтому если ты удалишь этот метод и попробуешь написать System.out,println(person1), а на самом деле комп видит System.out,println(person1.toString()) с пустым методом toString(), то получишь хэш код - Person@5a2e4553, а создавая этот метод, ты даешь понять компьютеру что тебе нужно записать его ид и имя. Надеюсь это именно так, и я хоть немного дал понять, сам только второй месяц учусь.
тк их использует ois и oos. Закрывая внешний поток, должен закрываться внутренний в том числе. Также выше был коммент, что закрывать потоки надо в блоке finally или, скорее всего, try с ресурсами тоже может решить этот вопрос
@@МунирЗикруллаев ту стринг - он же в классе пёрсон. Его же переопределили. он работает каждый раз, когда нужно представить объект в виде строки (например, если в соут положить объект пёрсон1 - джава знает как отобразить этот объект, потому что мы в классе пёрсон "изобразили" отображение объекта)
Очень все круто. Но есть вопрос, а если человек который сидит за другим компом. хочет прочитать файл но он не знает ничего о классе Person. Тогда он не сможет создать (Person)ois.readObject(). Как тогда быть?
Мы сериализуем не класс, а именно объект класса. Так что человек за другим компьютером должен у себя иметь класс Person. Причем его класс Person должен полностью совпадать с нашим. Прочитав наш файл, он получит сохраненный объект этого класса.
@@divergenny один из вариантов такой, и погугли еще "закрытие потоков в java при исключениях" FileInputStream fis = null; ObjectInputStream ois = null; try { fis = new FileInputStream("people.bin"); ois = new ObjectInputStream(fis);
Я только не могу понять , почему ты не юзаешь try с ресурсами. А так класс рассказываешь. Жалко , что занялся коммерцией и новый курс платный) За 5 баксов купил бы - 10 уже жалко . кек))
Странно, что вам жалко, что автор занялся коммерцией. Уроки шикарны, подобный труд достоин вознаграждения. Автор не обязан заниматься благотворительностью, к тому же очень много уроков выложено в бесплатном доступе, за что ему огромная благодарность. 10 баксов не такие и большие деньги, тут скорее вопрос приоритетов, куда потратить бабло. Я платный курс приобрела и не разочаровалась.
Когда в качестве конструктора для ObjectOutputStream я передаю fos, то в окне лампочки отсутствует пункт "Generalize catch for "java.io.FileNotFoundException" to "java.io.IOException""(prntscr.com/g01ag1). Каким образом мне обойти эту проблему и какая причина того, что у меня нет данного пункта? Старая версия java?(7) Пользуясь моментом, хотел бы поблагодарить вас за столь полезные и информативные видео. Очень рад, что нашёл ваш канал)
Почему у меня компилятор выдает следующее? com.company.file.writeandread.Person@5f4da5c3 com.company.file.writeandread.Person@443b7951 Это уже при чтении из файла
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 и, естественно, ничего в нём не видишь.
Флаг = индикатор.
какой Флаг = индикатор.?
@@ОстапЛьвовский интерфейс-маркер, что бы обозначить, что данный класс пренадлежит к чему-то. В данном случае к Серилазизации
Вы просто лучший учитель, всё последовательно и без лишних слов/усложнений. Спасибо вам!
Спасибо большое. Очень доступно! Преподаватель от Бога!
на javarush один из пользователей в комментарии оставил ссылку на это видео.
у этого коммента 22 лайка.
я подумал вам стоит знать)
Я как раз оттуда)
уже 69
О, это же был я))
@@einoharanen6828 зря ты так. как сборник задач - jr вполне норм. Теория там конечно не очень объясняется.
83
Вы лучший на ютубе по урокам java. Мне всё нравиться. Ваши видосы + статьи + книга = мощь
Только не останавливайся, у тебя очень полезные видеоуроки
Отличное, подробное объяснение на простом, понятном примере.
Информация усваивается мгновенно.
Благодарю за труд.
Красава, парень!
Доступно объясняешь!
Единственный на Ютубе кто объясняет очень точно и доходчиво , все четко и детально спасибо вам
_Отличный туториал. Все просто и понятно._
Лучшее объяснение, которое я встречал, спасибо)
Супер объяснение, спасибо!
Огромная благодарность, Наиль! Очень четкое объяснение.
Раньше в комменте писал тебе, что ты лучший, но сорри...
Ты САМЫЙ ЛУЧШИЙ!!!
Спасибо again))
А разве мы не должны закрывать поток в блоке?
finaly{
oos.close()
}
так как в блоке try, может вылететь exception и поток не закроется
Так и есть
Верное уточнение
Более правильно использовать try с ресурсами
там в обработке ошибки имеет смысл поставить логическое или между файлнотфаунд и айо эксепшенами. это и предлагала сделать идея. спс, хороший урок, как всегда.
Поправка - 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 Как ваши успехи?)
А как узнать сколько объектов в файле? В примере мы точно знаем, что их 2, потому и создаем 2 скастованных объекта типа Person. А если бы мы не знали кол-ва объектов, которых надо считать?? Подскажите, пжста
циклом проходишся по всем возможным файлам, которые могут существовать
@@complexity7032 не совсем лучший вариант. Имхо Лучше завести поля с доп информацией, и с ними работать
Большое спасибо!
Ты топ! Сколько видео просмотрено, сколько джаварашей и прочих перекодировано, но только ты помог мне разобраться со множеством вопросов.
Моё почтение и моя подписка обеспечены (:
:)
Потому что все по мелочам розьясняет )
И как Javarush?
давно пора прочитать философию джавы и не тратить время на просмотр видосов которые можно сомтреть в х2 скорости
Какой же ты четкий)) все-все понятно. Продолжай в том же духе!)
Спасибо! Скоро выйдет мой курс "Продвинутая Java". Будут затронуты такие темы как коллекции, многопоточность, тестирование и многое другое. Следите за обновлениями на канале :)
javaRussia конечно буду следить) ты единственный по джаве кого я смотрю и на кого подписан)
Спасибо большое. Пересматриваю уже и возник вопрос.
Вы закрываете объекты FileInputStream/FileOutputStream, а почему не закрываете сразу после этого соответствующие объекты ObjectInputStream/ObjectOutputStream?
Думаю вы уже разобрались, так что пишу на будущее...
Он закрывает не FileInputStream/FileOutputStream, а ObjectInputStream/ObjectOutputStream...
Object поток оборачивает Файловый поток, и когда закрывается внешний поток, внутренний тоже будет закрыт, надеюсь я правильно понял)
@@skt5659 А это работает также с File и Scanner, PrintWriter?
Спасибо за урок. Есть вопрос. Объясните, пожалуйста, каким образом у нас "подхватился" переопределённый метод 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.
Очень наглядно!! Круто
Все очень доступно, спасибо.
Замечательное видео все оч понятно
Очень полезное видео, лайк подписка и спасибо
Спасибо большое!!! Отличное видео!
Спасибо огромное @alishev
спасибо большое за курс
Спасибо за урок
FileInputStream тоже, наверное, над закрыть?
Спасибо , смотрю твою рекламу. Что бы ты за свои труды получал денежку.
Спасибо за видео. Есть вопрос: в Person1 и Person2 мы дважды "одинаково" читаем из объекта ObjectInputStream, но откуда java знает, что в Person2 нужно прочитать именно второй объект, а не первый?
Возможно название метода "readObject()" не совсем точно отражает суть происходящего. Чтобы стало понятно, представьте, что метод называется "readNextObject()". В реализации ObjectInputStream есть "указатель", который "смотрит" на текущий объект. Вызов метода readObject() сдвигает этот указатель так, чтобы он смотрел на следующий объект в файле.
Если вам вдруг надо два раза пройтись и десериализовать объекты из файла, вы всегда можете создать второй объект ObjectInputStream и его указатель опять будет смотреть на первый объект в файле.
@@alishevN как узнать сколько объектов в файлике? тут мы знаем, что их 2 и создали 2 переменные типа Person. А если бы не знали? Как тогда считать (десериализовать) все файлы, не зная их кол-ва?
@@alekseyfrozis937 очень хороший вопрос!!! На который нет ответа :((((
@@alekseyfrozis937 наверное зависит от задачи
можно например в начало файла записать сколько там объектов лежит
или читать пока не возникнет исключения типа "обнаружен конец файла"
или еще как то
Есть вопрос, зачем здесь нужны были геттеры? Если мы их не использовали?
Подскажи как настроить так чтобы в конструкторе класса подсвечивались поля. Спасибо
Как посмотреть документацию класса? Я понимаю что есть какая-то комбинация клавиш.
На маке я зажимаю клавишу command. На Windows посмотрите на сайте Intellij Idea.
Спасибо!
CTRL + клик по классу
И я так и не понял зачем нам два геттера которые мы нигде не вызываем.Тем более когда есть переопределенный метод toString,выполняющий по сути ту же функцию.
видимо автор сначала что то хотел с ними делать
а так то да, они не нужны в этом примере
Хм... а если в значениях объекта будет null? Как проверку правильно сделать? Я пробовал if null else но не прокатывает. Все равно null сериализует, а при загрузке ошибку выдает.
вопрос, в ReadObject когда считывались обе персоны, как система определила, что персон1 это все данные с персон1 в WriteObject? Как разделялись обе персоны правильно?
видимо эту инфу тоже шифрует в файл
Задам вопрос, пересмотрел все комменты нет такого вопроса. Я все делал по Вашему коду, но решил ID инкрементировать в конструкторе, что б по понятным причинам его не вводить. Так тогда с таким кодом все записывается в файл, но увы не считывается, может дальше в уроках и есть на это ответ, но пока что еще не дошел, вот и спрашиваю. Как можно решить даную проблему? Еще раз благодаою за отличный урок, лайкнул и подписался.
Шикарно объяснил) Спасибо тебе
здорова, заметил ты тут под каждым видео коммент оставляешь. и теперь перед тем как посмотреть видео смотрю оставил ли тут коммент или нет. впереди еще десяток уроков и надеюсь, что ты там тоже откоментил а то я не знаю
@@Holdy_Couldy привет . Всегда ставлю комментарии чтобы об авторе многие узнали он очень хорошо объясняет, но начал учить другой язык, java не зашла ))) удачи в обучении друг
@@ИгорьЧумиков-й5б привет, если не секрет почему не зашла джава и что начал учить и как идет то что ты сейчас учишь?
спасибо и тебе тоже )))
@@Holdy_Couldy я работал в техподдержке сказали учи 1с мы тебя повысим до программиста, я забросил начал учить 1с и понял что не моё от слова совсем ))) потом наткнулся на Скуторенко и понял что я влюбился в этот язык swift далее после Скуторенко нашел ребят с сайта Swift Books, и сейчас смотрю их уроки. Конечно многое не понятно это нормально главное делать понимание придет))) но мне нравится IOS
@@ИгорьЧумиков-й5б о, прикольно)) посмотрим насколько меня хватит, но запал еще вроде есть) еще раз удачи и терпения в обучении)
привет. может кто нибудь объяснить, почему объект person1 после прочтения из файла недоступен за блоком try/catch?
из за того что он находятся в фигурных скобках, и только там его видно
т.е. дело не в try/catch
Кто-нибудь знает как считать объекты из файла, если они добавлялись туда в конец (не один раз, модификатор append: true)?
спасибо
Спасибо за труд все получилось но ничего не запомнилось.
Объясните кто нибудь пожалуйста зачем мы пишем эту строку , если можем обойтись без нее, и для чего она нужна?public String toString() {
return id + ":" + name;
Пересмотри 24 урок про объекты и метод toString, думаю сразу прозреешь, но попробую объяснить. Методом toString ты создаешь инструкцию записи данных объекта. Этот метод он всегда вызывается скрыто у объекта, поэтому если ты удалишь этот метод и попробуешь написать System.out,println(person1), а на самом деле комп видит System.out,println(person1.toString()) с пустым методом toString(), то получишь хэш код - Person@5a2e4553, а создавая этот метод, ты даешь понять компьютеру что тебе нужно записать его ид и имя. Надеюсь это именно так, и я хоть немного дал понять, сам только второй месяц учусь.
огонь!
А почему мы не закрываем fileinputstream и out.. ?
тк их использует ois и oos. Закрывая внешний поток, должен закрываться внутренний в том числе. Также выше был коммент, что закрывать потоки надо в блоке finally или, скорее всего, try с ресурсами тоже может решить этот вопрос
Зачем в классе Person создали геттеры, если не воспользовались?
По привычке наверное))
Один момент-
Почему в writeobject - fos(close), а в ридобджект - ois(close)?
А почему поток FileInputStream ты закрываешь, а ObjectInputStream - нет?
Это называется цепочка потоков, достаточно закрыть любой из них
Единственный вопрос, который у меня остался после просмотра - почему нельзя поставить лайк дважды?!
ЗаJava
Лучший
То, что нужно было
почему в исключении не создать бы файл?
жаль нельзя два лайка поставить!))
Сейчас людей не id, а QR код)))
спасибо!
Thanks a lot!
Что то я не понял, где ты вызвал метод toString, когда читал файл.
Как он сам его вызвал? Объясните плз.
Я тоже не понял. Кто понял?
@@МунирЗикруллаев ту стринг - он же в классе пёрсон. Его же переопределили. он работает каждый раз, когда нужно представить объект в виде строки (например, если в соут положить объект пёрсон1 - джава знает как отобразить этот объект, потому что мы в классе пёрсон "изобразили" отображение объекта)
@@hagabobo88 Привет.
Я сейчас сижу и смеюсь над своим вопросом)
Сейчас я уже работаю джуном😀😀
@@МунирЗикруллаев ну блин, тогда потрать немного своего времени и расскажи про свой путь успеха :)
@@hagabobo88 учился по этому каналу dmdev. Канал топ!
насколько помню try сам закрывает поток
клёвый канал, я тоже с джавараш.
Thank you!
Очень все круто. Но есть вопрос, а если человек который сидит за другим компом. хочет прочитать файл но он не знает ничего о классе Person. Тогда он не сможет создать (Person)ois.readObject(). Как тогда быть?
Мы сериализуем не класс, а именно объект класса. Так что человек за другим компьютером должен у себя иметь класс Person. Причем его класс Person должен полностью совпадать с нашим. Прочитав наш файл, он получит сохраненный объект этого класса.
@@alishevN Понял, спасибо.
У меня при написании oos.writeObject(person1); ругается что нет такого метода как writeObject! что делать?
как решил проблему?
у меня так было когда с большой буквы написал
а почему джава по умолчанию не делает калссы сериализуемыми - это связано с какими-либо тратами ресурсов?
Значит надо)
У программистов ничего не бывает просто так
Привет! Спасибо за уроки. Вы закрываете потоки в блоке 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 Спасибо большое
А если бы переменные в классе ReadObjects назывались бы person 3 i person 4? мэйн скачал бы для их полей значение из файла для 1 и 2 персоны?
Да конечно, мы их могли вообще в массив считать
@@AlexShev01 не понятно, напишите, пожалуйста, пример.
Очень жду ваши уроки! Спасибо вам огромное за них! Подскажите пожалуйста, если не секрет, какую книгу вы могли бы порекомендовать по Java для чтения?
Брюс Эккель - "Философия Java"
Спасибо
Программа работает, но почему у меня файле не ничего
Может поток не закрыл
Я только не могу понять , почему ты не юзаешь try с ресурсами.
А так класс рассказываешь.
Жалко , что занялся коммерцией и новый курс платный)
За 5 баксов купил бы - 10 уже жалко . кек))
На уроке 47 рассказывается про try-with-resources.
Странно, что вам жалко, что автор занялся коммерцией. Уроки шикарны, подобный труд достоин вознаграждения. Автор не обязан заниматься благотворительностью, к тому же очень много уроков выложено в бесплатном доступе, за что ему огромная благодарность. 10 баксов не такие и большие деньги, тут скорее вопрос приоритетов, куда потратить бабло. Я платный курс приобрела и не разочаровалась.
@@summerray888 аналогично!
Шикарные уроки!!!! Есть вопрос, почему мы в классе 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 если он уже есть
Спс за видос. Есть вопрос. А что если у нас 50 объектов а не два?
foreach в помощь
Когда в качестве конструктора для ObjectOutputStream я передаю fos, то в окне лампочки отсутствует пункт
"Generalize catch for "java.io.FileNotFoundException" to "java.io.IOException""(prntscr.com/g01ag1). Каким образом мне обойти эту проблему и какая причина того, что у меня нет данного пункта? Старая версия java?(7)
Пользуясь моментом, хотел бы поблагодарить вас за столь полезные и информативные видео. Очень рад, что нашёл ваш канал)
Скорей всего вам надо обновить Intellij Idea.
Спасибо, теперь всё работает
оказывается сериализация не сложно совсем
👍🏻
Почему у меня компилятор выдает следующее?
com.company.file.writeandread.Person@5f4da5c3
com.company.file.writeandread.Person@443b7951
Это уже при чтении из файла
у тебя toString переопределён в классе Person?
@@TheSweetMoloko в этом и была ошибка)
♥️
Еще бы в видео было показано содержимое файла .bin , было бы вообщше супер. Просто в текстовом редакторое открыл бы файл после записи.
написано все точно знак в знак и ни чего не записывается, файл пустой
Код в студию
Закрой поток @@RedCaviarRus
Не пойму, зачем тут нужны геттеры?
Инкапсуляция? Поля приватные, доступ с другого класса не получить?
Кровь из глаз, смотреть в 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!