Pure Java – 59 File and I/O – 04
Merhaba Arkadaslar,
Bu yazida java dosya IO islemlerinde stream konusunu inceleyecegiz ;
- InputStream
- FileInputStream
- OutputStream
- FileOutputStream
- BufferedInputStream
- BufferedOutputStream
- OutputStreamWriter
- InputStreamReader
Onceki bolumlerde isledigimiz Reader/Writer siniflari karaktere yoneliktir(Character Oriented) InputStream/OutputStream ise byte’a yoneliktir(byte oriented)
InputStream ve OutputStream abstract siniflardir.Dosya IO islemlerinde FileInputStream ve FileOutputStream kullanilir.
Onceki orneklerde String veya char dizisini dosyaya yazmistik, bu ornekte byte dizisini dosyaya yazacagiz.
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class StreamTest1 { public static void main(String[] args) throws IOException { byte[] b = { 108, 101, 118, 101, 110, 116 }; // levent ---> karakterlerine karsilik gelen unicode degerleridir. // OutputStream sinifi abstract siniftir. // FileOutputStream IS-A OutputStream dir. OutputStream os = new FileOutputStream("test.txt"); os.write(b); os.flush(); os.close(); InputStream is = new FileInputStream("test.txt"); for (int i = 0; i < b.length; i++) { System.out.print("" + (char) is.read()); } is.close(); } }
Benzer ornegi BufferedOutputStream ve BufferedInputStream kullanarak da yapabiliriz.
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class BufferedStreamTest { public static void main(String[] args) throws IOException { File file = new File("bufferedstream.txt"); OutputStream os = new FileOutputStream(file); BufferedOutputStream bos = new BufferedOutputStream(os); byte[] b = { 108, 101, 118, 101, 110, 116 }; bos.write(b); bos.flush(); bos.close(); InputStream is = new FileInputStream(file); BufferedInputStream bis = new BufferedInputStream(is); while(bis.available()>0){ char c =(char) bis.read(); System.out.print(c); } bis.close(); } }
OutputStreamWriter sinifi ile karakterleri stream sekilde yazarken Charset kullanabiliriz.
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; public class OutputStreamWriterTest { public static void main(String[] args) throws IOException { OutputStream os = new FileOutputStream("test.txt"); OutputStreamWriter writer = new OutputStreamWriter(os, "UTF-8"); writer.write(305); writer.write(351); writer.write(287); writer.write(252); writer.write(220); writer.write(246); writer.flush(); writer.close(); InputStream is = new FileInputStream("test.txt"); // InputStreamReader isr = new InputStreamReader(is,"ISO-8859-1"); InputStreamReader isr = new InputStreamReader(is, "UTF-8"); int i = 0; char c; while ((i = isr.read()) != -1) { c = (char) i; System.out.println(c); } } }
Bu siniflar disinda bir cok IO sinifi mevcuttur. Ihtiyaca yonelik olarak kullanilabilir.
Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
OCE, Java EE 6 Web Component Developer
Leave a Reply