logo

Character Stream vs Byte Stream i Java

En strøm er en kontinuerlig strøm af data. I Java bruges I/O-streams til at læse fra inputkilder eller skrive til outputdestinationer såsom filer. De giver en måde at få adgang til data sekventielt. Java.io-pakken inkluderer klasser til håndtering af både byte-strømme og karakterstrømme og også til konvertering mellem dem.

  • Inputstrøm: læser data fra kilden. 
  • Outputstrøm: skriver data til en destination. 

Hvornår skal du bruge Character Stream over Byte Stream:

I Java gemmes tegn ved hjælp af Unicode-konventioner. Tegnstrøm er nyttig, når vi vil behandle tekstfiler. Disse tekstfiler kan behandles tegn for tegn. Tegnstørrelse er typisk 16 bit.



fjern første tegn i excel

Hvornår skal du bruge Byte Stream over Character Stream:

Byteorienteret læser byte for byte. En bytestrøm er velegnet til at behandle rådata som binære filer.

Nøglepunkter ved brug og håndtering af nogen af ​​ovenstående streams:

  • Karakterstreamklasser slutter normalt med Reader/Writer, mens bytestreamklasser slutter med InputStream/OutputStream.
  • Eksempelkoderne i denne artikel bruger ikke-buffrede streams, som er mindre effektive. For bedre ydeevne pakker vi dem almindeligvis ind med BufferedReader/BufferedWriter (tegnstrømme) eller BufferedInputStream/BufferedOutputStream (bytestrømme).
  • Luk altid streams efter brug for at frigøre ressourcer og forhindre fejl.
  • Ovenstående koder kører muligvis ikke i online-kompilere, da filer muligvis ikke eksisterer.

Karakterstrøm

I Java gemmes tegn ved hjælp af Unicode-konventioner. Tegnstrøm giver os automatisk mulighed for at læse/skrive data tegn for tegn. For eksempel er FileReader og FileWriter karakterstrømme, der bruges til at læse fra kilden og skrive til destinationen.

non_unicode_bytes' title=Karakterstrømme

Eksempel

mysql oprette bruger
Java
import 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();  }  } } 

Produktion:

Skriver indhold til målfilen tegn for tegn

eksempler på java-kode

Program udført med succes

Byte Stream

En byte-stream i Java er en strøm, der håndterer input og output af rå 8-bit binære data. Det bruges hovedsageligt til at læse og skrive ikke-tekstdata, såsom billeder, lyd-video eller enhver binær fil. F.eks FileInputStream bruges til at læse fra kilden og FileOutputStream til at skrive til destinationen.

Eksempel:

Java
import 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();  }  } } 

Produktion:

Program udført med succes

Forskelle i karakterstream vs bytestream

AspektKarakterstrømByte Stream
Datatype håndteret16-bit Unicode-tegn (tekst)8-bit rådata (binær)
Klasser afsluttes medLæser/skribentInputStream / OutputStream
Velegnet tilTekstfiler Unicode-dataBilleder lyd video binære filer
OmdannelseKonverterer bytes til tegn automatiskIngen konvertering virker med rå bytes
EksemplerFileReader FileWriterFileInputStream FileOutputStream

Relateret artikel

  • Java IO - Input/Output i Java med eksempler