ENTRADA E SAIDA SIMPLIFICADAS EM JAVA
PACOTE MyIo
Roberto da Silva Bigonha
Eduardo Santos Cordeiro
agosto de 2006
A seguir, apresentam-se as interfaces das classes de MyIo
3.1 Classe Screen
Os métodos abaixo convertem o parâmetro dado para uma cadeia de
caracteres ASCII e os envia para o monitor de vídeo, para
exibição a partir da posição corrente do cursor.
Os métodos cujos nomes terminam por ln forçam uma
mudança de linha após a escrita.
3.2 Classe Kbd
Os métodos de Kbd abrem o teclado para leitura e
os caracteres digitados são convertidos para o tipo indicado
no seu nome. Brancos e caracteres de controle de linha antes
do valor lido são ignorados. A sequência de caracteres lida
termina com um caractere branco ou de controle de linha.
A sequência lida será convertida para int, float, double
ou String conforme o método de leitura chamado.
3.3 Classe IntText
Os métodos de InText funcionam como os de Kbd,
exceto que os caracteres são lidos do arquivo cujo nome
foi informado ao método construtor da classe, que toma
as providências de abertura do arquivo especificado.
A tentativa de leitura além da marca de fim de arquivo
gera a exceção IOException.
3.4 Classe OutText
Os métodos de OutText são análogos aos de
Screen, exceto que a saída é direcionada para
o arquivo de texto criado pela função construtora da
classe.
4. Exemplos de Uso
4.1 Arquivo TestKbd.java
import java.io.*;
import MyIo.*;
public class TestKS {
public static void main(String[] args) throws IOException {
boolean b = false; int x = 0; long r = 0;
float y =(float) 0.0; double d = 0.0;
String s = "indefinido";
Screen.println("Entre com os valores:");
Screen.print("boolean b = ");
b = Kbd.readBoolean() ;
Screen.print("b lido = "); Screen.println(b);
Screen.print("int x = ");
x = Kbd.readInt() + 1;
Screen.print("x + 1 = "); Screen.println(x);
Screen.print("long r = ");
r = Kbd.readLong() + 1 ;
Screen.print("r + 1 = "); Screen.println(r);
Screen.print("float y = ");
y = Kbd.readFloat() + (float) 1.0;
Screen.print("y + 1.0 = " ); Screen.println(y);
Screen.print("double d = ");
d = Kbd.readDouble() + 1.0;
Screen.print("d + 1.0 = "); Screen.println(d);
Screen.print("String s = ");
s = Kbd.readString();
Screen.print("s = "); Screen.println(s);
}
}
4.2 Arquivo TestInText.java
import java.io.*;
import MyIo.*;
public class TestInText {
public static void main(String[] args) throws IOException {
boolean b = false;
byte e = 0;
char c = 'A';
int x = 0;
long r = 0;
float y =(float) 0.0;
double d = 0.0;
String s = "indefinido";
InText in = new InText(args[0]);
b = in.readBoolean() ;
Screen.println("boolean b lido = " + b);
e = in.readByte();
Screen.println("byte e lido = " + e);
x = in.readInt();
Screen.println("int x lido = " + x);
r = in.readLong();
Screen.println("long r lido = " + r);
y = in.readFloat();
Screen.println("float y lido = " + y);
d = in.readDouble();
Screen.println("double d lido = " + d);
s = in.readString();
Screen.println("String s lido = " + s);
}
}
4.3 Arquivo TestInTextEof.java
import java.io.*;
import MyIo.*;
public class TestInTextEof {
public static void main(String[] args) {
boolean b = false; byte e = 0; char c = 'A';int x = 0;
long r = 0; float y =(float) 0.0; double d = 0.0;
String s = "indefinido";
try {
InText in = new InText(args[0]);
b = in.readBoolean() ;
Screen.println("boolean b lido = " + b);
e = in.readByte();
Screen.println("byte e lido = " + e);
x = in.readInt();
Screen.println("int x lido = " + x);
r = in.readLong();
Screen.println("long r lido = " + r);
y = in.readFloat();
Screen.println("float y lido = " + y);
d = in.readDouble();
Screen.println("double d lido = " + d);
s = in.readString();
Screen.println("String s lido = " + s);
}
catch(Exception ex){
Screen.println("Fim de arquivo lido inesperadamente");
}
}
}
4.4 Arquivo TestOutText.java
import java.io.*;
import MyIo.*;
public class TestOutText {
public static void main(String[] args) throws IOException {
boolean b = false; byte e = 0; char c = 'A'; int x = 0;
long s = 0; float y =(float) 0.0; double d = 0.0;
InText in = new InText(args[0]);
OutText out = new OutText(args[1]);
b = in.readBoolean() ;
Screen.println("boolean b lido = " + b);
out.print(b); out.print(" ");
e = in.readByte();
Screen.println("byte e lido = " + e);
out.print(e); out.print(" ");
x = in.readInt();
Screen.println("int x lido = " + x);
out.print(x); out.print(" ");
s = in.readLong();
Screen.println("long s lido = " + s);
out.print(s); out.print(" ");
y = in.readFloat();
Screen.println("float y lido = " + y);
out.print(y); out.print(" ");
d = in.readDouble();
Screen.println("double d lido = " + d);
out.print(d); out.print(" ");
}
}
5. Tratamento de Fim de Arquivo
Para manter o pacote mais simples o possível, não há tratamento
automático de fim de arquivo.
Se o fim de arquivo for lido indevidamente, o programa
será cancelado. O programador deve prover uma marca no
fim de cada arquivo e explicitamente testá-la para evitar
o cancelamento do programa.
© Roberto da Silva Bigonha