Clase Java
Clase Java
Clase Java
• Manejo de cadenas
– java.lang.String
– java.lang.StringBuffer
– java.util.StringTokenizer
• Control de errores
• Entrada/Salida (java.io)
– Streams de datos (DataInputStream/DataOutputStream)
– Streams de caracteres (Reader/Writer)
– Entrada y salida estándar (System.in/System.out)
– Manejo de archivos: File, RandomAccessFile
Ejemplo:
static int numCaracteresEntre (String str, char car){
int primeraPos = str.indexOf(car);
if (primeraPos<0) return -1; //no existe el car en str
int ultimaPos = str.lastIndexOf(car);
return ultimaPos - primeraPos -1;
}
El lenguaje de programación Java 2
Clase String
• Comparación:
– boolean equals: compara contenido de los strings.
– boolean equalsIgnoreCase: no distingue entre mayúsculas y minúsculas.
– int compareTo: útil para ordenar Strings.
• Modificación:
– String replace (char oldChar, char newChar)
– String toLowerCase()
– String toUpperCase()
– String trim(): quitar espacios en blanco
• Otros:
– boolean startsWith (String prefix)
– boolean endWith (String suffix)
– String substring (int beginIndex)
– String substring (int beginIndex, int endIndex)
El lenguaje de programación Java 3
Ejemplo: String
Ejemplo2:
public static String subCadena (String str, char ini, char fin){
int posInicial = str.indexOf(ini);
int posFinal = str.lastIndexOf(fin);
• Métodos principales:
– setCharAt(int, char)
– StringBuffer insert (int offset, valor)
– StringBuffer append (valor) donde valor puede ser:
• int, char, boolean, float, double, long
• Object
• String
• char [ ] str
El lenguaje de programación Java 5
Ejemplo: StringBuffer
Ejemplo3:
public static String escribirRaiz (int i){
StringBuffer buf = new StringBuffer(); char
int
buf.append(“sqrt(“).append(i).append(‘)’);
buf.append(“ = “).append(Math.sqrt(i));
return buf.toString();
}
String double
Ejemplo4:
public static StringBuffer insertaFecha (StringBuffer buf)){
String hoy = new java.util.Date().toString();
buf.ensureCapacity(buf.length()+hoy.length()+2);
buf.insert(0,hoy).insert(hoy.length(), ”:“);
return buf;
}
• Constructores habituales:
– StringTokenizer(String cadena)
Utiliza los delimitadores por defecto: " \t\n\r\f“
• Tienen:
– una fuente = streams de entrada o
– un destino = streams de salida
• Clases de archivo:
archivo
– File y RandomAccesFile (mayor control sobre los archivos) 14
Jerarquía de clases de java.io
(parcial)
Object
RandomAccessFile
File
InputStream OutputStream Reader Writer
FileInputStream
FilterInputStream
FileOutputStream
FilterOutputStream
InputStreamReader
OutputStreamReader
BufferedReader
BufferedWriter
PrintWriter
FileReader
DataInputStream
DataOutputStream
FileWriter
BufferedInputStream
BufferedOutputStream
15
InputStream
Método Descripción
read() Lee el siguiente byte del flujo de entrada y lo
devuelve como un entero. Cuando alcanza EOFel final
read(byte b[]) del
Lee flujo de datos,
múltiples bytesdevuelve -1.
y los almacena en la matriz b.
Devuelve el número de bytes leídos o -1 cuando se
read(byte b[], alcanza el len
Lee hasta finalbytes
del flujo de datos.
de datos del flujo de entrada,
int off, empezando desde la posición indicada por el
int long) desplazamiento off, y los almacena en una matriz.
available() Devuelve el número de bytes que se pueden leer de
un flujo de entrada sin que se produzca un bloqueo
por causa de una llamada a otro método que utiliza
skip(long n) el mismo
Omite flujo dede
la lectura entrada.
n bytes de datos de un flujo de
entrada y los descarta.
close() Cierra un flujo de entrada y libera los recursos del
sistema utilizados por el flujo de datos.
El lenguaje de programación Java 16
OutputStream
Método Descripción
write(int b) Escribe b en un flujo de datos de salida.
byte archivo
write(int) s
write(byte[])
read()
bytes
read(byte[])
int read()
read(char[])
archivo carac.
DataInputStream readBoolean
readChar
readByte
FileInputStream
readShort
readInt
readLong
readFloat
archivo bytes readDouble
int read() readUTF
read(byte[])
InputStreamReader(System.in));
String entrada = teclado.readLine();
El lenguaje de programación Java 31
Clase File
• Constructores:
– RandomAccessFile(File archivo, String modo)
– RandomAccessFile(String archivo, String modo)
donde modo = “r” (lectura) o “rw” (lectura-escritura)
• Métodos:
– void seek(long posicion): establece posición actual del puntero.
– long getFilePointer(): devuelve la posición actual (en bytes).
– int skipBytes(int desplazamiento): mueve el puntero el nº de
bytes del parámetro
– long length(): longitud del archivo en bytes
El lenguaje de programación Java 34
Ejemplo: Leemos por el teclado el nombre de un archivo y el
valor real que vamos a almacenar en el mismo.
class archivos{
public static void main(String[] args) {
try{
BufferedReader teclado = new BufferedReader(
new InputStreamReader(System.in));
RandomAccessFile salida = new RandomAccessFile(
teclado.readLine(), “rw”);
salida.seek(salida.length()); //vamos al final del archivo