Character Stream vs Byte Stream i Java
En ström är ett kontinuerligt flöde av data. I Java används I/O-strömmar för att läsa från ingångskällor eller skriva till utdatadestinationer som filer. De tillhandahåller ett sätt att komma åt data sekventiellt. Java.io-paketet innehåller klasser för att hantera både byteströmmar och teckenströmmar och även för att konvertera mellan dem.
- Indataström: läser data från källan.
- Utdataström: skriver data till en destination.
När ska man använda Character Stream över Byte Stream:
I Java lagras tecken med Unicode-konventioner. Teckenström är användbart när vi vill bearbeta textfiler. Dessa textfiler kan bearbetas tecken för tecken. Teckenstorleken är vanligtvis 16 bitar.
När ska du använda Byte Stream över Character Stream:
Byteorienterad läser byte för byte. En byteström är lämplig för att bearbeta rådata som binära filer.
Nyckelpunkter när du använder och hanterar någon av ovanstående strömmar:
- Teckenströmsklasser slutar vanligtvis med Reader/Writer medan byteströmklasser slutar med InputStream/OutputStream.
- Exempelkoderna i den här artikeln använder obuffrade strömmar som är mindre effektiva. För bättre prestanda omsluter vi dem vanligtvis med BufferedReader/BufferedWriter (teckenströmmar) eller BufferedInputStream/BufferedOutputStream (byteströmmar).
- Stäng alltid strömmar efter användning för att frigöra resurser och förhindra fel.
- Ovanstående koder kanske inte körs i onlinekompilatorer eftersom filer kanske inte existerar.
Karaktärsström
I Java lagras tecken med Unicode-konventioner. Teckenström låter oss automatiskt läsa/skriva data tecken för tecken. Till exempel är FileReader och FileWriter teckenströmmar som används för att läsa från källan och skriva till destinationen.
Karaktärsströmmar Exempel
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 innehåll till målfilen tecken för tecken
Programmet har körts framgångsrikt
Byte Stream
En byteström i Java är en ström som hanterar in- och utmatning av rå 8-bitars binär data. Det används huvudsakligen för att läsa och skriva icke-textdata, såsom bilder ljudvideo eller någon binär fil. Till exempel FileInputStream används för att läsa från källan och FileOutputStream för att skriva till destinationen.
Exempel:
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:
Programmet har körts framgångsrikt
Character Stream vs Byte Stream Skillnader
| Aspekt | Karaktärsström | Byte Stream |
|---|---|---|
| Datatyp hanterad | 16-bitars Unicode-tecken (text) | 8-bitars rådata (binär) |
| Klasserna avslutas med | Läsare/skribent | InputStream / OutputStream |
| Lämplig för | Textfiler Unicode-data | Bilder ljud video binära filer |
| Omvandling | Konverterar byte till tecken automatiskt | Ingen konvertering fungerar med råbyte |
| Exempel | FileReader FileWriter | FileInputStream FileOutputStream |
Relaterad artikel
- Java IO - Input/Output i Java med exempel