IO BÁSICO I
En el IO se interactua mas con lo que puede hacer java, y hasta donde podemos expandir nuestra creatividad con las herramientas que poseemos.
A continuación, en los tres siguientes códigos veremos de que manera se pueden copiar lo que hay en un archivo en otro, luego veremos que método es mas eficiente con respecto a que y porque.
- CÓDIGO CLASE: CopiaBytes
//Copiar la frase de un documento a otro, pero lo copia byte por byte.
package EjercicioIO1;
import java.io.*;
public class CopiaBytes {
public static void main(String[] args) throws IOException {
//Inicializa variables de creacion de documentos
FileInputStream documentoentrada=null;
FileOutputStream documentocopiando=null;
try{
//Abre docuemntos
documentoentrada= new FileInputStream("C://Documents and Settings//frase.txt");
documentocopiando= new FileOutputStream("C://Documents and Settings///Copiado.txt");
documentocopiando= new FileOutputStream("C://Documents and Settings///Copiado.txt");
int lectura;
//Recorre el documento a copiar, como es por copyBytes es comparado con el numero -1 que es el fin
while ((lectura=documentoentrada.read())!=(-1)){
//Va copiando el documento que se va leyendo en el nuevo documento
documentocopiando.write(lectura);
}
System.out.println("Documento Copiado");
}
//Bloque de catchs
catch(FileNotFoundException e){
System.out.println("No se encuentra el archivo" +e);
}
catch(IOException a){
System.out.println("Error al copiar el archivo" +a);
}
//Cierra documentos
finally{
if(documentoentrada!=null){
documentoentrada.close();
}
if (documentocopiando!=null){
documentocopiando.close();
}
}
}
}
- CÓDIGO CLASE: CopiaLine
package EjercicioIO1;
import java.io.*;
public class CopiaLine {
public static void main(String[] args) throws IOException {
//Inicializa variables de creacion de documentos
BufferedReader documentoentrada=null;
PrintWriter documentocopiando=null;
try{
//Inicializa documentos donde va a copiar y del que va a copiar
documentoentrada= new BufferedReader(new FileReader("C://frase3.txt"));
documentocopiando= new PrintWriter(new FileWriter("C://Copiado3.txt"));
String lectura;
//lee el docuemnto del que va a copiar
while ((lectura=documentoentrada.readLine())!=null){
//copiando al documento nuevo
documentocopiando.println(lectura);
}
System.out.println("Documento Copiado");
}
//Bloque de capturas de errores
catch(FileNotFoundException e){
System.out.println("No se encuentra el archivo");
}
catch(IOException a){
System.out.println("Error al copiar el archivo");
}
//Cierra documentos
finally{
if(documentoentrada!=null){
documentoentrada.close();
}
if (documentocopiando!=null){
documentocopiando.close();
}
}
}
}
- CÓDIGO CLASE: CopiaCharacters
//Copia de un documento por caracter a caracter a otro documento.
package EjercicioIO1;
import java.io.*;
public class CopiaCharacters {
public static void main(String[] args) throws IOException {
//Inicia las variables.
FileReader documentoentrada=null;
FileWriter documentocopiando=null;
try{
//Inicializa documentos donde va a copiar y del que va a copiar
documentoentrada= new FileReader("C://frase2.txt");
documentocopiando= new FileWriter("C://Copiado2.txt");
int lectura;
//Va leyendo el documento de entrada
while ((lectura=documentoentrada.read())!=-1){
//Copiando el docuemtno
documentocopiando.write(lectura);
}
System.out.println("Documento Copiado");
}
//Bloque de caputar de errores
catch(FileNotFoundException e){
System.out.println("No se encuentra el archivo");
}
catch(IOException a){
System.out.println("Error al copiar el archivo");
}
finally{
//Cierra documentos
if(documentoentrada!=null){
documentoentrada.close();
}
if (documentocopiando!=null){
documentocopiando.close();
}
}
}
}
Acabamos de ver tres maneras diferentes de copiar un documento, lo que debemos poner en practica es como saber usar esta información, es de bastante ayuda, no es algo fuera de lo común, acá tienen los posibles usos de los buffered y las impresiones.
- FileInputStream : Los objetos FileInputStream típicamente representan ficheros de texto accedidos en orden secuencial, byte a byte. Con FileInputStream, se puede elegir acceder a un byte, varios bytes o al fichero completo.
- FileOutputStream : Los objetos FileOutputStream son útiles para la escritura de ficheros de texto. Como con los ficheros de entrada, primero se necesita abrir el fichero para luego escribir en él.
- BufferedReader : Leer texto de un flujo de caracteres de entrada
- PrintWriter: Imprime en formato representaciones de objetos en una secuencia de texto de salida.
- FileReader : Clase conveniente para leer caracteres de textos
- FileWriter: Clase conveniente para escribir caracteres en textos.
IO BÁSICO II
En esta sección del IO veremos una simple entrada por teclado y un ejemplo de una manera particular de imprimir diferentes tipos de cadenas o números.
- CÓDIGO CLASE: EjemploPW
//Similar a la impresion de System.out.println pero con PrintWriter
package EjercicioIO2;import java.io.*;
public class EjemploPW {
public static void main(String []args){
//Probando salidas en pantalla
PrintWriter pw = new PrintWriter(System.out, true);
pw.println("Imprime una cadena de texto");
int i = 15;
pw.println("Imprime un entero " + i);
double d = 6.8e-9;
pw.println("Imprime un double " + d);
}
}
- CÓDIGO CLASE: EntradaPorTeclado
import java.io.*;
public class EntradaPorTeclado {
public static void main (String []args){
String uniondecaracteres; //Cadena a la que se llevan todos los caracteres leidos
BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); // se lee del teclado
System.out.println("Escriba /* si desea salir, de lo contrario escriba normalmente");
try{
do{
uniondecaracteres=br.readLine(); // se van uniendo los caracteres
System.out.println(uniondecaracteres);
}while(!uniondecaracteres.equals("/*")); // para salir
}
catch(Exception e){
System.out.println("Error General");
}
}
}
Creo que hemos aprendido bastante con los ejemplos, deberíamos ver que estamos haciendo en cada linea, es un trabajo que uno se debe tomar a la hora de programar, mira los ejemplos, fueron tomados de la plataforma de Ude@, puede que te sirvan, si alguna cosa me pueden avisar, tanto como algún error o también me pueden escribir un comentario o un correo y yo con gusto les responderé.

Hi!
ResponderEliminarTengo un problema, tengo que copiar linea por linea un documento que tengo, por decir un .txt, como hago para que me separe cada linea, osea que me separe en una arreglo cada enter
Hola, una buena idea es que tomes el ejemplo que hay en esta misma entrada llamado CopiaLine
ResponderEliminarSino que para agregarlo en un arreglo puedes poner algo asi:
while ((lectura=documentoentrada.readLine())!=null){
String[] arreglo = lectura
}
Thx, si me sirvio
ResponderEliminarThx ademas por la respuesta inmediata
Tengo otra duda: si defino el vector antes del ciclo porque algunas veces me saca problemas
Si haces eso le tienes que dar dimensión al vector, y como casi siempre se supone que uno no sabe cuantas lineas cuantos caracteres tiene el documento que esta leyendo...
ResponderEliminarMira, si por ejemplo le das diez de tamaño al vector, y son once lineas... te saca un error..
Entonces es mejor crearlo dentro del while que así el va llenando hasta que termine de leer lineas... Entonces luego para saber la dimensión del arreglo es mas fácil, es con arreglo.length(); que te lanza un entero, cualquier otra duda me comentas. Con gusto siempre le responderé apenas pueda. :)
Hola jorge queria separar de un texto de una sola linea y agregarlos a un vector, tengo que separarlo por el espacio
ResponderEliminarBien, ya para esto hay varias formas, la que mas simple me parece es SPLIT
ResponderEliminarCon el split, simplemente le das la instrucción de porque carácter quieres que separen.
Un ejemplo seria ( siguiendo el ejemplo que llevamos trabajando )
while ((lectura=documentoentrada.readLine())!=null){
String[] arreglo = lectura.split("\\|");
}
Ahí se separa cada que encuentra un | y los mete en un vector, con un espacio seria similar.