Het lezen en schrijven van binaire streams is een van de meest voorkomende I / O-taken die een Java-toepassing kan uitvoeren. Het kan worden uitgevoerd door naar elke afzonderlijke byte in een stream te kijken of door een meer gestructureerde gebufferde aanpak te gebruiken.
Notitie: Dit artikel gaat in op het lezen van binaire gegevens van een
Example.jpghet dossier. Als u deze code probeert, vervangt u eenvoudig de naam van de
Example.jpgmet het pad en de naam van een jpeg-bestand op uw computer.
De
java.ioclass was de eerste Java-api die Input / Output-functionaliteit bood. Het heeft twee methoden die kunnen worden gebruikt om bytestreams (blokken van 8 bits) van en naar een bestand in en uit te voeren. Deze klassen zijn de
FileInputStreamen
FileOutputStream. Deze methoden bieden een basismethode voor I / O door een bestand één byte tegelijk in of uit te voeren. In de praktijk is het beter om een gebufferde methode te gebruiken voor binaire streams, maar het is goed om naar de meest elementaire bouwsteen van de Java I / O-functionaliteit te kijken.
Merk op hoe we de I / O-verwerking in een
probeer, vangst, eindelijkblock-dit is om ervoor te zorgen dat we omgaan met IO-uitzonderingen en om de streams correct te sluiten. Het catch-blok toont eventuele I / O-uitzonderingen en drukt een bericht af voor de gebruiker. In het slotblok is het belangrijk om de streams expliciet te sluiten door de methode close aan te roepen, anders blijven ze open en verspillen ze bronnen. Er wordt gecontroleerd of de
FileInputStreamen
FileOutputStreamzijn nul voordat ze proberen te sluiten. Dit komt omdat er een I / O-fout kan optreden voordat de streams worden geïnitialiseerd. Als de bestandsnaam bijvoorbeeld onjuist is, wordt de stream niet correct geopend
proberenblok kunnen we code toevoegen om in de bytes te lezen: De
lezenmethode leest in één byte van de
FileInputStreamen de schrijfmethode schrijft een byte naar de
FileOutputStream. Wanneer het einde van het bestand is bereikt en er geen bytes meer zijn om in te voeren, wordt de waarde -1 geretourneerd.
Nu Java 7 is uitgebracht, ziet u het voordeel van een van de nieuwe functies: het proberen met bronnenblok. Dit betekent dat als we in het begin de streams naar het try-blok identificeren, het de stream voor ons sluit. Dit elimineert de noodzaak voor het laatste blok in het vorige voorbeeld:
De volledige Java-codelijsten voor de twee versies van het byte-leesprogramma zijn te vinden in Binary Stream Example Code.