Esimerkki 01
Alkaen artikkelimme ensimmäisen esimerkin, olemme luoneet uutta Java-tiedostoa, 'test.java'. Sen jälkeen loimme myös tekstitiedoston samaan kansioon.
Jotta voimme lukea syöttövirran objekteja Java-ohjelmassa, meidän on tuotava tulosvirta. Olemme siis tuoneet 'java.io.ObjectInputStream' ja 'java.io.ObjectOutputStream' paketteja alussa. Tämän lisäksi, jotta voimme lisätä tiedot tiedostoon, meidän on tuotava 'java.io.FileInputStream' ja 'java.io.FileInputStream'. Olemme luoneet luokan 'Main', jossa on yksi main()-funktio.
Toiminnon suoritus alkaa kokonaislukumuuttujan “d” ilmoituksesta. Välttääksemme ohjelman äkillisen poistumisen virheiden takia, lisäsimme javan try-catch-käskyn. 'Try'-osa alkaa tiedoston lähtövirtaobjektin 'f' alustuksella FileOutputStream-luokan kautta. Olemme välittäneet tiedostonimen 'new.txt' tälle objektille 'f'. Olemme luoneet Object Output Stream -virran 'o' ja siirtäneet tiedostoobjektin 'f' ObjectOutputStream-luokkaan tehdäksemme tiedostosta tulosvirran.
Heti seuraavalla rivillä olemme kutsuneet Java-lähtövirran writeInt()-funktiota lähtövirtaobjektin 'o' kautta välittääksemme sille kokonaislukumuuttujan 'd', eli tallentaaksemme sen tiedostoon. Rivillä 12 olemme luoneet tiedostojen syöttövirran 'fs' käyttämällä java-tiedoston FileInputStream-luokkaa välittämällä sille tiedoston 'new.txt', eli siinä on jo dataa. Tämä tiedoston syöttövirtaobjekti 'fs' on välitetty ObjectInputStream-luokan äskettäin luodulle objektille 'os', jotta tiedostovirrasta voidaan lukea. Javan 'System.out'-paketin println()-funktio on hylätty kutsumaan readInt()-funktiota objektin syöttövirran objektin 'os' kautta uuden.txt-tiedoston tietojen näyttämiseksi. Sen jälkeen olemme sulkeneet tulosvirran ja syöttövirran käyttämällä vastaavia objekteja 'o' ja 'os' käyttämällä Java-tiedostojen käsittelyn 'sulkea'-toimintoa. Tämä on välttämätön vaihe streamien sulkemiseksi, jotta kukaan muu käyttäjä ei voi syöttää tai tulostaa tietoja tiedostosta. Olemme catch()-käskyssä käyttäneet getStackTrace()-funktiota saadaksemme virheen ja näyttämään sen näytöllä Exception-muuttujan “e” kautta. Tämä ohjelma on valmis suoritettavaksi shellissä.
Olimme juuri tallentaneet java-kooditiedostomme ennen sen suorittamista ja käytimme java-avainsanaohjetta 'test.java'-tiedoston suorittamiseen. Se ei palauta mitään vastineeksi. Myös tekstitiedoston 'new.txt' tietojen näyttäminen kuoressa 'cat'-käskyn avulla näytti roskaarvon. Tämä johtuu siitä, että suurimman osan ajasta java-suorittaja ei pysty lukemaan kokonaislukuarvoa tiedostosta. Mutta todennäköisimmin se näyttää tarkan kokonaisluvun arvon.
Tarkastettaessamme new.txt-tiedostoa avaamalla se manuaalisesti, olemme nähneet, että tiedostossa on esitetty arvon Unicode-muoto.
Jos et pysty näyttämään kokonaislukuarvoa tiedostovirrasta, voit käyttää java-ohjelman writeObject()-funktiota writeInt()-funktion sijaan kirjoittaaksesi arvon 'd' tiedostovirtaan objektin 'o' kautta. kuten näytetään. Tämän lisäksi sinun on poistettava 'readObject()'-funktio readInt()-funktion sijaan, jotta voit näyttää tiedoston syöttövirran tiedot.
Tämän koodin päivittäminen näyttäisi kokonaisluvun suorituksen yhteydessä.
Esimerkki 02
Otetaan toinen java-ohjelmoinnin arvo, joka sulkee objektin syöttövirran merkkijonotyypin arvoa varten. Siksi olemme aloittaneet tämän esimerkkikoodin tuomalla samat java-luokat FileInputStream, FileOutputStream, ObjectInputStream ja ObjectOutputStream java-kirjaston 'io'-paketista. Main-luokassa on main()-funktio tämän koodin suorittamisen aloittamiseksi. Merkkijonomuuttuja 'd2' alustetaan pitkällä merkkijonoarvolla.
Sama try-catch-lause on hylätty virheiden välttämiseksi ja tämän Java-koodin sujuvan suorittamisen varmistamiseksi. Objekti “f” tiedoston tulostusvirralle on luotu FileOutputStream-luokan kautta käyttämällä argumenttina “new.txt”. Tiedoston lähtövirtaobjekti 'f' on välitetty tulosvirtaobjektille 'o', joka on luotu ObjectOutputStream-luokan avulla. Nyt lähtövirta 'o' on kutsunut writeObject()-funktiota välittämällä sille merkkijonomuuttujan 'd', joka kirjoitetaan tiedostoon 'new.txt'.
Sitten luotiin tiedostosyöttövirta 'fs' käyttämällä FileInputStream-luokkaa antamalla sille tiedostonimi 'new.txt' eli lukemaan siitä tiedot. Nyt ObjectInputStream-luokan objekti 'os' käyttäisi tiedoston syöttövirtaobjektia 'fs' tietojen lukemiseen käyttämällä javan readObject()-funktiota 'System.out'-luokan 'println'-suorituskäskyssä. Sitten meillä on tapana sulkea syöttö- ja lähtövirrat kutsumalla 'sulje'-funktiota, ja catch-lausetta hyödynnetään saadakseen mahdolliset poikkeukset try-osassa ja välttämään tämän ohjelman suorittamisen äkillinen sulkeminen.
Tämän Java-kooditiedoston ja tekstitiedoston suorittaminen näytti merkkijonon arvon konsolissa.
Johtopäätös
ObjectInputStream-luokan käyttö on ainoa käytettävissä oleva menetelmä Serializable- tai Externalizable-protokollaa käyttävien aineiden lukemiseen. Yhteenvetona totean, että olemme sisällyttäneet kaikki tarvittavat yksityiskohdat, jotta voimme käyttää Java-objektinsyöttöluokkaa tietojen lukemiseen tiedostoobjektin syöttövirrasta. Tätä varten olemme heittäneet tänne kaksi erilaista Java-koodiesimerkkiä. Ensimmäisessä esimerkissä hyödynnetään kokonaislukutyyppistä syöttömuuttujan arvoa, kun taas toisessa havainnollistuksessa on käytetty merkkijonomuuttujan arvoa, eli luettua syöttötiedostovirrasta.