Straume ir nepārtraukta datu plūsma. Java I/O straumes tiek izmantotas, lai lasītu no ievades avotiem vai rakstītu uz izvades galamērķiem, piemēram, failiem. Tie nodrošina veidu, kā secīgi piekļūt datiem. Java.io pakotnē ir iekļautas klases gan baitu, gan rakstzīmju straumju apstrādei, kā arī konvertēšanai starp tām.
css komentārs
- Ievades straume: nolasa datus no avota.
- Izvades straume: ieraksta datus galamērķim.
Kad izmantot rakstzīmju straumi, izmantojot baitu straumi:
Java valodā rakstzīmes tiek saglabātas, izmantojot Unikoda konvencijas. Rakstzīmju straume ir noderīga, ja vēlamies apstrādāt teksta failus. Šos teksta failus var apstrādāt pēc rakstzīmes. Rakstzīmju lielums parasti ir 16 biti.
Kad izmantot baitu straumi pār rakstzīmju straumi:
Orientēts uz baitu, nolasa baitu pa baitam. Baitu straume ir piemērota neapstrādātu datu, piemēram, bināro failu, apstrādei.
Galvenie punkti, lietojot un strādājot ar kādu no iepriekš minētajām straumēm:
- Rakstzīmju straumes klases parasti beidzas ar Reader/Writer, savukārt baitu straumes klases beidzas ar InputStream/OutputStream.
- Šajā rakstā minētie kodu piemēri izmanto nebuferētas straumes, kas ir mazāk efektīvas. Lai nodrošinātu labāku veiktspēju, mēs tos parasti iesaiņojam ar BufferedReader/BufferedWriter (rakstzīmju straumes) vai BufferedInputStream/BufferedOutputStream (baitu straumes).
- Pēc lietošanas vienmēr aizveriet straumes, lai atbrīvotu resursus un novērstu kļūdas.
- Iepriekš minētie kodi var nedarboties tiešsaistes kompilatoros, jo faili var nepastāvēt.
Rakstzīmju straume
Java valodā rakstzīmes tiek saglabātas, izmantojot Unikoda konvencijas. Rakstzīmju straume automātiski ļauj mums lasīt/rakstīt datus pa rakstzīmi. Piemēram, FileReader un FileWriter ir rakstzīmju straumes, ko izmanto, lai lasītu no avota un rakstītu uz galamērķi.
Rakstzīmju straumesPiemērs
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(); } } }
Izvade:
Ieraksta saturu mērķa failā pēc rakstzīmes
Programma veiksmīgi izpildīta
arraylist.sort
Baitu straume
Java baitu straume ir straume, kas apstrādā neapstrādātu 8 bitu bināro datu ievadi un izvadi. To galvenokārt izmanto, lai lasītu un rakstītu neteksta datus, piemēram, attēlus, audio un video vai jebkuru bināro failu. Piemēram FileInputStream tiek izmantots, lai lasītu no avota un FileOutputStream, lai rakstītu uz galamērķi.
Piemērs:
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(); } } }
Izvade:
Programma veiksmīgi izpildīta
Rakstzīmju straumes un baitu straumes atšķirības
| Aspekts | Rakstzīmju straume | Baitu straume |
|---|---|---|
| Apstrādātais datu tips | 16 bitu unikoda rakstzīmes (teksts) | 8 bitu neapstrādāti dati (bināri) |
| Nodarbības beidzas ar | Lasītājs / rakstnieks | InputStream / OutputStream |
| Piemērots | Teksta faili Unikoda dati | Attēli audio video binārie faili |
| Pārvēršana | Automātiski pārvērš baitus par rakstzīmēm | Neviena konvertēšana nedarbojas ar neapstrādātiem baitiem |
| Piemēri | FileReader FileWriter | FileInputStream FileOutputStream |
Saistīts raksts
- Java IO — ievade/izvade Java ar piemēriem