Giriş / Çıkış İşlemleri

advertisement
BufferedInputStream Sınıfı
java.lang.Object
java.io.InputStream
java.io.FilterInputStream
java.io.BufferedInputStream
public class BufferedInputStream
extends FilterInputStream
Bir BufferedInputStream nesnesi yaratılınca bir buffer array’i yaratılmış olur. Bu nesne
giriş eylemine ek olarak mark() ve reset() metotlarını da kullanır. Giriş akımından byte
okundukça ya da atlandıkça (skip) yaratılan buffer array’inin bileşenlerine yazılır. Bir seferde
birden çok byte okunabilir. mark() metodu giriş akımının neresinde olunduğunu işaretler.
Eğer reset() metodu çalışırsa, son okunan işaretli (marked) yerden önceki işaretin
bulunduğu yerden okuma tekrarlanır.
Adından da anlaşılacağı gibi, buffer’daki verilerin okunmasını sağlar. Buffer bir bellek alanı
olduğundan, oradan veri okumak demek, bellekten veri okumak demektir. Dolayısıyla, başka
bir giriş kanalından veri okumaya göre çok daha hızlıdır. BufferedInputStream sınıfı
InputStream sınıfının bütün metotlarını kullanır. Ayrıca şu iki metoda sahiptir:
Veri alanları (değişkenleri):
protected byte[] buf
Giren verinin konulacağı buffer.
protected int count
Buffer’a en son giren byte’ın indisinden sonraki indis.
protected int marklimit
Mark metodu çağrıldıktan sonra (ve reset() metodu çağrılmadan önce) en çok kaç byte
okunacağını belirler.
protected int markpos
Son işaretli yer çağrıldığında pos değişkeninin yeri.
protected int pos
Buffera giren son byte’ın yeri.
Kurucuları:
BufferedInputStream(InputStream in)
Bir BufferedInputStream nesnesi yaratır,
ana bellekte giriş akımından gelen verilerin
yerleşeceği bir buffer oluşturur, onu buf değikenine atar. Buffer büyüklüğü öntanımlıdır
(default). in parametresi giriş akımını belirler.
BufferedInputStream(InputStream in, int size)
1
Bir BufferedInputStream nesnesi yaratır, ana bellekte giriş akımından gelen verilerin
yerleşeceği ve uzunluğu size olan bir buffer oluşturur. in parametresi giriş akımını belirler
Örnek:
package scanner;
import java.io.*;
public class FileOps {
public static String fileToString(String infile) {
try {
BufferedReader reader = new BufferedReader(new
FileReader(infile));
String result = "";
String line = reader.readLine();
while (line != null) {
result = result + line + '\n';
line = reader.readLine();
}
reader.close();
return result;
} catch (IOException ex) {
System.out.println(ex);
return "";
}
}
public static void stringToFile(String outfile, String contents) {
try {
BufferedWriter writer = new BufferedWriter(new
FileWriter(outfile));
// fileWriter yarat
writer.write(contents); // text dosyaya yazılıyor
writer.close(); //
} catch (IOException ex) {
System.out.println(ex);
}
}
public static void main(String[] args) {
stringToFile("ddd.txt", "ist 365 Java Programlama Dili");
}
}
/**
* ist 365 Java Programlama Dili
*/
2
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class MainClass {
public static void main(String args[]) {
try {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
while (true) {
System.out.print("Radius? ");
String str = br.readLine();
double radius;
try {
radius = Double.valueOf(str).doubleValue();
} catch (NumberFormatException nfe) {
System.out.println("Incorrect format!");
continue;
}
if (radius <= 0) {
System.out.println("Radius must be positive!");
continue;
}
double area = Math.PI * radius * radius;
System.out.println("Area is " + area);
return;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
Yarıçap : 3.6
Alan : 40.71504079052372
*/
import java.io.*;
public class Demo {
public static void main (String[] args) {
System.out.print("Adınız : ");
// standart giriş akımı
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
String ad = null;
3
try {
ad = br.readLine();
} catch (IOException ioe) {
System.out.println("Giriş hatası!");
System.exit(1);
}
System.out.println("Teşekkürler, " + ad);
}
}
/**
Adınız : Yasemin
Teşekkürler, Yasemin
*/
Örnek:
tipinden olan System.in değişkeni önce InputStreamReader sınıfına
gömülüyor. Sonra bu sınıf BufferedReader sınıfına gömülüyor. Böylece,
BufferedReader sınıfının metotlarını kullanma olanağı yaratılıyor.
InputStream
class Demo {
public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader input = new BufferedReader(isr);
String line;
// girilen satırları tutar
// satırları okur ve yazar
// Durmak için EOF: control-Z (Windows), control-D (ötekiler)
while ((line = input.readLine()) != null) {
System.out.println(line);
// satırları yazar
}
}
}
Örnek:
Program 4. Klâvyeden BufferReader ’a Giriş
import java.io.*;
public class karekok{
public static void main (String[] args) throws IOException {
BufferedReader stdin=new BufferedReader
(new InputStreamReader(System.in));
4
double root1, root2;
double rootca, rootcb;
System.out.println("Enter the coefficient of x^2 :");
int a=Integer.parseInt(stdin.readLine());
System.out.println("Enter the coefficient of x :");
int b=Integer.parseInt(stdin.readLine());
System.out.println("Enter the constant value :");
int c=Integer.parseInt(stdin.readLine());
double delta, deltasqrt;
delta = b*b -4*a*c ;
if (delta >= 0)
{
deltasqrt = Math.sqrt(delta);
root1 = (-b+deltasqrt)/(2*a);
root2 = (-b-deltasqrt)/(2*a);
System.out.println("The roots are : " + root1 + " and " + root2);
}
else
{
deltasqrt = Math.sqrt(-delta);
rootca
= deltasqrt/(2*a);
rootcb
= deltasqrt/(2*a);
System.out.println("The roots are : " + -b/(2*a) + "+i" +rootca +
" and " + -b/(2*a) + "-i" + rootcb);
}
}
}
/*
Açıklamalar:
public String readLine()
throws IOException
Bir satırlık metin okur. Satır bitişi aşağıdakilerden birisiyle olur:
‘\n’
: yeni satır (line feed) ,
‘\r’
: satırbaşı (carriage return), ya da
satırbaşını hemen izleyen yeni satır
*/
Program: Klâvyeden Buffer’a Giriş
// BufferedReader ile klâvyeden karakter okuma
5
import java.io.*;
class BRRead {
public static void main(String args[])
throws IOException
{
char c;
BufferedReader br = new
BufferedReader(new InputStreamReader(System.in));
System.out.println("Metin gir; durmak için 'q' yaz.");
// karakter oku
do {
c = (char) br.read();
System.out.println(c);
} while(c != 'q');
}
}
/*
Açıklamalar:
public int read()
throws IOException
Her seferinde bir karekter okur.
*/
Program: Klâvyeden BufferedReader ile metin girişi
// BufferedReader ile bir metin girişi.
import java.io.*;
class BRReadLines {
public static void main(String args[])
throws IOException
{
// create a BufferedReader using System.in
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
String str;
System.out.println("Bir satır yaz.");
System.out.println("Durmak için 'stop' yaz.");
do {
str = br.readLine();
System.out.println(str);
} while(!str.equals("stop"));
}
}
/*
public String readLine()
throws IOException
6
Bir satırlık metin okur. Satır bitişi aşağıdakilerden birisiyle olur:
‘\n’
: yeni satır (line feed) ,
‘\r’
: satırbaşı (carriage return), ya da
satırbaşını hemen izleyen yeni satır
*/
Program: Klâvyeden BufferedReader ’a Giriş
// Basit bir editor.
import java.io.*;
class TinyEdit {
public static void main(String args[])
throws IOException
{
// create a BufferedReader using System.in
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
String str[] = new String[100];
System.out.println("Bir satır yaz.");
System.out.println("Durmak için yeni bir satıra 'dur' yaz.");
for(int i=0; i<100; i++) {
str[i] = br.readLine();
if(str[i].equals("dur")) break;
}
System.out.println("\n Yazdığınız metin budur:");
// display the lines
for(int i=0; i<100; i++) {
if(str[i].equals("dur")) break;
System.out.println(str[i]);
}
}
}
7
Download