Virta on jatkuva datavirta. Javassa I/O-virtoja käytetään lukemiseen tulolähteistä tai kirjoittamiseen tulostuskohteisiin, kuten tiedostoihin. Ne tarjoavat tavan päästä tietoihin peräkkäin. Java.io-paketti sisältää luokat sekä tavuvirtojen että merkkivirtojen käsittelyyn sekä niiden väliseen muuntamiseen.
mitä pythonissa on
- Syöttövirta: lukee dataa lähteestä.
- Lähtövirta: kirjoittaa tietoja määränpäähän.
Milloin merkkivirtaa käytetään tavuvirran yli:
Javassa merkit tallennetaan Unicode-käytäntöjen mukaisesti. Merkkivirta on hyödyllinen, kun haluamme käsitellä tekstitiedostoja. Näitä tekstitiedostoja voidaan käsitellä merkki merkiltä. Merkkikoko on yleensä 16 bittiä.
Milloin tavuvirtaa kannattaa käyttää merkkivirrassa:
Tavusuuntautunut lukee tavu tavulta. Tavuvirta soveltuu raakadatan, kuten binääritiedostojen, käsittelyyn.
Tärkeimmät asiat käytettäessä ja käsiteltäessä mitä tahansa yllä olevista virroista:
- Merkkivirtaluokat päättyvät yleensä Reader/Writeriin, kun taas tavuvirtaluokat päättyvät InputStream/OutputStream.
- Tämän artikkelin esimerkkikoodit käyttävät puskuroimattomia virtoja, jotka ovat vähemmän tehokkaita. Suorituskyvyn parantamiseksi käärimme ne yleensä BufferedReader/BufferedWriter (merkkivirrat) tai BufferedInputStream/BufferedOutputStream (tavuvirrat).
- Sulje streamit aina käytön jälkeen vapauttaaksesi resursseja ja estääksesi virheet.
- Yllä olevat koodit eivät välttämättä toimi online-kääntäjissä, koska tiedostoja ei välttämättä ole olemassa.
Hahmovirta
Javassa merkit tallennetaan Unicode-käytäntöjen mukaisesti. Merkkivirran avulla voimme automaattisesti lukea/kirjoittaa tietoja merkki kerrallaan. Esimerkiksi FileReader ja FileWriter ovat merkkivirtoja, joita käytetään lukemiseen lähteestä ja kirjoittamiseen kohteeseen.
HahmovirratEsimerkki
Javaimport java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Initially assigning null as we have not read anything FileReader sourceStream = null; try { // Reading from file sourceStream = new FileReader('/Users/mayanksolanki/Desktop/demo.rtf'); // Reading sourcefile and writing content to target file character by character. int temp; // If there is content inside file than read while ((temp = sourceStream.read()) != -1) System.out.println((char)temp); System.out.print('Program successfully executed'); } finally { if (sourceStream != null) sourceStream.close(); } } }
Lähtö:
Kirjoittaa sisältöä kohdetiedostoon merkki merkiltä
Ohjelma suoritettu onnistuneesti
kokeile catch block java
Tavuvirta
Tavuvirta Javassa on tietovirta, joka käsittelee 8-bittisen raakabinaaridatan syöttöä ja tulostusta. Sitä käytetään pääasiassa ei-tekstidatan, kuten kuvien audio-videon tai minkä tahansa binaaritiedoston lukemiseen ja kirjoittamiseen. Esimerkiksi FileInputStream käytetään lukemiseen lähteestä ja FileOutputStreamia kirjoittamiseen kohteeseen.
Esimerkki:
Javaimport java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Initially assigning null ot objects for reading and writing to file FileInputStream sourceStream = null; FileOutputStream targetStream = null; try { // Passing the files via local directory sourceStream = new FileInputStream('/Users/mayanksolanki/Desktop/demo.rtf'); targetStream = new FileOutputStream('/Users/mayanksolanki/Desktop/democopy.rtf'); // Reading source file and writing content to file byte by byte int temp; // If there is content inside file than read while ((temp = sourceStream.read()) != -1) targetStream.write((byte)temp); System.out.print('Program successfully executed'); } // finally block that executes for sure where we are closing file connections to avoid memory leakage finally { if (sourceStream != null) sourceStream.close(); if (targetStream != null) targetStream.close(); } } }
Lähtö:
Ohjelma suoritettu onnistuneesti
Merkkivirran ja tavuvirran erot
| Aspekti | Hahmovirta | Tavuvirta |
|---|---|---|
| Käsitelty tietotyyppi | 16-bittiset Unicode-merkit (teksti) | 8-bittinen raakadata (binääri) |
| Luokat päättyvät | Lukija / Kirjoittaja | InputStream / OutputStream |
| Sopii käytettäväksi | Tekstitiedostot Unicode-tiedot | Kuvat ääni-video binaaritiedostot |
| Muuntaminen | Muuntaa tavut merkeiksi automaattisesti | Mikään muunnos ei toimi raakatavuilla |
| Esimerkkejä | FileReader FileWriter | FileInputStream FileOutputStream |
Aiheeseen liittyvä artikkeli
- Java IO - Input/Output Javassa esimerkein