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