PDF de programación - 5. Cadenas y Entrada/Salida

Imágen de pdf 5. Cadenas y Entrada/Salida

5. Cadenas y Entrada/Salidagráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 1 de Diciembre del 2017)
1.381 visualizaciones desde el 1 de Diciembre del 2017
350,5 KB
18 paginas
Creado hace 18a (21/10/2005)
5. Cadenas y Entrada/Salida

• 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 ficheros: File, RandomAccessFile

El lenguaje de programación Java

1

Cadenas de texto
• String es solo-lectura mientras que StringBuffer es mutable
• Métodos básicos de la clase String:
public String()
//constructor de un obj de valor “”
public String(String value) //constructor de obj copia de value
public int length()
public char charAt(int index) //0 ≤ index ≤ length-1

//longitud

(si se accede a cualquier otra posición lanza IndexOutOfBoundsException)

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

1

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);
if (posInicial==-1) return null; //no existe ini en str
else if (posFinal == -1)

else

}

return str.substring(posInicial);

return str.substring(posInicial, posFinal+1);

El lenguaje de programación Java

4

2

Clase StringBuffer
• StringBuffer permite modificar el String en lugar de crear uno

nuevo en cada paso intermedio.

• Métodos similares e igual nombre que String pero son independientes.
• Constructores:

• StringBuffer()
• StringBuffer(String)

• 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

Ejemplo: StringBuffer

Ejemplo3:
public static String escribirRaiz (int i){
int

StringBuffer buf = new StringBuffer();
buf.append(“sqrt(“).append(i).append(‘)’);
buf.append(“ = “).append(Math.sqrt(i));
return buf.toString();

}

5

char

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;

}

El lenguaje de programación Java

6

3

Ejemplo String y StringBuffer
• Ejercicio: Escribir un método que tome como entrada un string

que representa un número y devuelva el mismo numero divido por
puntos cada tres dígitos. Esto es, para la entrada “12345” la salida
sería “12.345”
public static String ponerPuntos(String numero){

int size = numero.length();
int numptos= (size -1)/3;

if (numptos==0) return numero;
else {StringBuffer buf = new StringBuffer(numero);

for (int i=1;i<=numptos;i++)
return buf.toString();

buf.insert((size-3*i),'.');

}

}

El lenguaje de programación Java

7

Clase StringTokenizer

• Utilizado para dividir una cadena según unos delimitadores

• Constructores habituales:

– StringTokenizer(String cadena)

Utiliza los delimitadores por defecto: " \t\n\r\f“

– StringTokenizer(String cadena, String

delimitadores)

• Métodos para iterar:

– boolean hasMoreTokens()
– String nextToken()

El lenguaje de programación Java

8

4

Ejemplo StringTokenizer

StringTokenizer st = new StringTokenizer(“esto es una
prueba");

while (st.hasMoreTokens()) {

System.out.println(st.nextToken());

}

Imprime la siguiente salida:

esto
es
una
prueba

El lenguaje de programación Java

9

Ejemplo StringTokenizer

public class Logica{
public static String separaAND (String proposicion){

StringTokenizer strTokenizer;
strTokenizer = new StringTokenizer(proposicion, "^");
StringBuffer buffer = new StringBuffer();

}

}

String token = null; boolean inicio=true;
while (strTokenizer.hasMoreTokens()){

token = strTokenizer.nextToken();
if (!inicio) buffer.append("^");
buffer.append("(").append(token.trim()).append(")");
inicio = false;

}
return buffer.toString();

El lenguaje de programación Java

10

5

Control de errores

• Cuando se produce un error en un método se genera una

excepción.

• Estructura:

try{
//bloque que puede provocar un error
}catch (tipoExcepcion identificador){
/* acciones a realizar si se produce

el error

// acciones a realizar haya o no error

*/

}finally{

}

El lenguaje de programación Java

11

Entrada/Salida. Paquete java.io

• Define la entrada/salida en términos de streams

• Un stream es una secuencia ordenada de datos

• Tienen:

– una fuente = streams de entrada o
– un destino = streams de salida

• El paquete java.io tiene dos partes principales:

– Stream de caracteres (caracteres Unicode de 16 bits)
– Stream de bytes (8 bits)

El lenguaje de programación Java

12

6

Entrada/Salida. Paquete java.io

• E/S puede estar basada:

– En texto: streams de caracteres legibles

Ejemplo: el código fuente de un programa

– En datos: streams de datos binarios

Ejemplo: patrón de bits de una imagen

• Los streams de caracteres se utilizan en la E/S basada

en texto.
– Se denominan lectores (reader) y escritores (writer)

• Los streams de bytes se utilizan en la E/S basada en

datos.
– Se denominan streams de entrada y streams de salida

El lenguaje de programación Java

13

Clases principales de java.io

Clases de flujo de entrada:
•• Clases de flujo de entrada
– Se utilizan para leer datos de una fuente de entrada (archivo, cadena o
– Flujo de bytes: InputStream, BufferedInputStream,

memoria)
DataInputStream, FileInputStream

– Flujo de caracteres: Reader, BufferReader, FileReader
Clases de flujo de salida::
•• Clases de flujo de salida
– Son las homólogas a las clases de flujo de entrada y se utilizan para enviar
– Flujo de bytes: OutputStream, PrintStream,

flujos de datos a dispositivos de salida
BufferedOutputStream, DataOutputStream y
FileOutputStream

– Flujo de caracteres : Writer, PrintWriter, FileWriter
Clases de archivo:
•• Clases de archivo
– File y RandomAccesFile (mayor control sobre los archivos)

14

7

Jerarquía de clases de java.io

(parcial)

Object

InputStream

OutputStream

Reader

m
a
e
r
t
S
t
u
p
n
I
e
l
i
F

m
a
e
r
t
S
t
u
p
n
I
r
e
t
l
i
F

m
a
e
r
t
S
t
u
p
t
u
O
e
l
i
F

m
a
e
r
t
S
t
u
p
t
u
O
r
e
t
l
i
F

r
e
d
a
e
R
d
e
r
e
f
f
u
B

r
e
d
a
e
R
m
a
e
r
t
S
t
u
p
n
I

DataInputStream

BufferedInputStream

DataOutputStream

BufferedOutputStream

RandomAccessFile

File

Writer

r
e
t
i
r
W
t
n
i
r
P

r
e
t
i
r
W
d
e
r
e
f
f
u
B

FileReader

r
e
d
a
e
R
m
a
e
r
t
S
t
u
p
t
u
O

FileWriter

15

InputStream
Método
read()
read(byte b[])
read(byte b[],
int off,
int long)
available()

skip(long n)
close()

EOF

Descripción
Lee el siguiente byte del flujo de entrada y lo devuelve como un entero.
Cuando alcanza el final del flujo de datos, devuelve -1.
Lee múltiples bytes y los almacena en la matriz b. Devuelve el número
de bytes leídos o -1 cuando se alcanza el final del flujo de datos.
Lee hasta len bytes de datos del flujo de entrada, empezando desde la
posición indicada por el desplazamiento off, y los almacena en una
matriz.
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 el mismo flujo de entrada.
Omite la lectura de n bytes de datos de un flujo de entrada y los
descarta.
Cierra un flujo de entrada y libera los recursos del sistema utilizados por
el flujo de datos.

El lenguaje de programación Java

16

8

OutputStream

Método
write(int b)
write(byte b[])
write(byte b[],
int off,
int long)
flush()
close()

Descripción
Escribe b en un flujo de datos de salida.

Escribe la matriz b en un flujo de datos de salida.

Escribe len bytes de la matriz de bytes en el flujo de datos
de salida, empezando en la posición dada por el
desplazamiento off
Vacía el flujo de datos y fuerza la salida de cualquier dato
almacenado en el búfer.
Cierra el flujo de datos de salida y libera cualquier recurso
del sistema asociado con él.

El lenguaje de programación Java

17

Streams sobre Ficheros

• FileInputStream: muy similar a la clase InputStream,

sólo que está diseñada para leer archivos.
– FileInputStream(String name)
– FileInputStream(File name)

• FileOutputStream: muy similar a la clase

OutputStream, sólo que está diseñada para escribir en
archivos.
– FileOutputStream(String name)
– FileOutputStream(String name, boolean append)

• Si append==true queremos añadir al final del fichero

– FileOutputStream(File name)

El lenguaje de programación Java

18

9

Ejemplo: streams sobre ficheros
import java.io.*;
public class Copia {

public static void main(String args[]) {

FileInputStream origen = null;
FileOutputStream destino = null;
try {

origen = new FileInputStream(args[0]);
destino = new FileOutputStream(args[1],true); //añadir
int i = origen.read();
while (i != -1) { // mientras not EOF

El lenguaje de programación Java

19

destino.write(i);
i = origen.read();

}
origen.close(); destino.close();
}catch (IOException e) {

System.out.println("Error de ficheros”);

}
}

}

Reader y Writer
• Dar soporte Unicode en todas las operaciones de E/S.
• En ocasiones hay que combinar streams de caracteres y de

bytes:
– InputStreamReader: convierte un InputStream en un Reader
– OutputStre
  • Links de descarga
http://lwp-l.com/pdf7765

Comentarios de: 5. Cadenas y Entrada/Salida (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad