¡Hola! me encuentro de regreso por un momento en Curiosidades, se acerca el fin de la Sexta Unidad de Programación Orientada a Objetos y desde hace tiempo se me ocurrió hacer una publicación para darles ideas a mis compañeros, eso fue en mi otro blog iSysCompany, pero por razones de la nada fue cerrado y al parecer todo por mi culpa u_u, pero aun asi volví a realizar 2 pequeñas clases para mostrar a mis compañeros una idea de lo que tienen que entregar para dicha Unidad mencionada.
La primera clase que muestro a continuación se encarga de almacenar en un archivo de texto alguna cosa que quieras, en mi caso es una variable que ya tiene un valor, bien podria ser mas interactivo, ejemplo:
- Que se pida el dato por consola
- Que de opciones para guardar algunas cosas
- Etc. jeje
No se me ocurre nada, de eso se deben encargar ustedes compañeros, si están leyendo esta publicación mas vale que comiencen a pensar en algo.
La segunda clase muestra como leer el contenido de un archivo de texto, trabajaré con el nombre del archivo de la clase anterior.
El objetivo de esta Unidad es utilizar clases para escribir sobre archivo [Binarios o de texto] y usar accesos secuenciales o aleatorios para obtener el contenido de los archivos [Binarios o de Texto].
A mi se me facilito el uso de archivos de texto y por eso uso en los ejemplos las clases:
- File (Para crear el archivo)
- FileWriter (Para escribir sobre el archivo)
- FileReader (Para leer el archivo)
El metodo write de la clase FileWriter es el que se encarga de escribir sobre el archivo de texto. Para no hacer largo esto, aqui estan las clases:
/*Clase que permite escribir en un archivo de texto*/
//Importamos clases que se usaran
import java.io.File;
import java.io.FileWriter;
public class Escribir
{
public static void main(String []args)
{
//Un texto cualquiera guardado en una variable
String saludo="Hola";
try
{
//Crear un objeto File se encarga de crear o abrir acceso a un archivo que se especifica en su constructor
File archivo=new File("texto.txt");
//Crear objeto FileWriter que sera el que nos ayude a escribir sobre archivo
FileWriter escribir=new FileWriter(archivo,true);
//Escribimos en el archivo con el metodo write
escribir.write(saludo);
//Cerramos la conexion
escribir.close();
}
//Si existe un problema al escribir cae aqui
catch(Exception e)
{
System.out.println("Error al escribir");
}
}
}
/*Clase que permite leer un archivo de texto*/
//Importamos clases a usar
import java.io.FileReader;
import java.io.BufferedReader;
public class Leer
{
public static void main(String arg[])
{
//Creamos un String que va a contener todo el texto del archivo
String texto="";
try
{
//Creamos un archivo FileReader que obtiene lo que tenga el archivo
FileReader lector=new FileReader("texto.txt");
//El contenido de lector se guarda en un BufferedReader
BufferedReader contenido=new BufferedReader(lector);
//Con el siguiente ciclo extraemos todo el contenido del objeto "contenido" y lo mostramos
while((texto=contenido.readLine())!=null)
{
System.out.println(texto);
}
}
//Si se causa un error al leer cae aqui
catch(Exception e)
{
System.out.println("Error al leer");
}
}
}
84 comentarios:
Write comentariosMuchas gracias!! :D este ejemplo esta excelente >< super sencillo y muy eficiente :D gracias por compartirlo :D
ResponderEliminarMe da gusto que te funcionará :) Saludos.
EliminarMuy bien amigo me fue de mucha utilidad, gracias
ResponderEliminarExcelente :D me da mucho gusto :D
Eliminarhola y si yo deseo no escribir caracteres, en lugar de un número int que debo hacer? basandome en el primer ejemplo
ResponderEliminarescribir.write(saludo);
Disculpa si entendí tu pregunta: ¿Si deseas escribir números?
EliminarLa solución podría ser un:
escribir.write(String.valueOf(new Integer(9));
Espero te sea de ayuda, gracias.
hola cuchox excelente!!!.. Me funciono ala perfección pero quisiera saber basándome en el primer código como hago que siga guardando en el archivo txt pero en otra línea?
ResponderEliminarHola, hace unos días me encontraba programando en Visual Basic .NET, Existe una clase llamada StreamWriter que permite realizar una edición de los archivos, desconozco si en Java se puede hacer esto con el primer ejemplo que te doy. Una idea podría ser primero, extraer el contenido que tiene el archivo [Como en el segundo ejemplo, guardarlo en un StringBuilder [Con el método append] y después con el mismo contenido volver a llamar al append [append es para ir agregando "trozos" de texto] al final tendras el texto antiguo y el nuevo.
EliminarPosteriormente puedes usar directamente el ejemplo 1.
Supongo puedes usar un escribir.write(stringBuilder.toString());
Espero te sea de ayuda :D Saludos y suerte
Excelente aporte, no entendía como hacer estas operaciones con archivos, ahora me queda claro, ¡Gracias!
ResponderEliminarExcelente, me da gusto :D hay formas más complejas pero quiero pensar que ésta es una de las más fáciles, Saludos.
Eliminargracias si me ayudo exitos
ResponderEliminarQué bueno que te ayudó :D Saludos
EliminarHola muchas gracias por poner el codigo este sera mi base para futuros programas mil gracias
ResponderEliminarGracias amigo :D Espero te sirvan, cualquier duda no dudes en consultarnos.
EliminarMuy util, disculpa como puedo introducir un salto de linea para guardar en el archivo por varias lineas,
ResponderEliminarSaludos y muy buen blog
Hola amigo, en la línea del: escribir.write(saludo);
Eliminarsaludo juega el papel de una cadena... puedes hacer esto:
escribir.write(saludo+"\n");
El \n funciona como un salto de línea, espero te funcione, gracias por visitarnos :D
puedes utilizar este metodo:
Eliminarvoid escribirtxt() throws IOException{
BufferedWriter out = null;
try {
out = new BufferedWriter(new FileWriter("C:/log.txt", true));
out.write(datos);
out.newLine();
} catch (IOException e) {
// error processing code
} finally {
if (out != null) {
out.close();
}
}
}
el método debe ir en un try y un catch
y lo puedes usar en un botón o donde quieras...
olvide mencionarte si declaras como una variable String global puedes utilizarla en donde quieras y con esto asignarle texto igual en el método puedes poner después de declararlo algo así como:
Eliminardatos="tu texto";
datos= unavariablestring+unjtextarea.gettext+"un texto";
datos= unavariabletiponumerica+"";
así como incluir un filechooser para indicar la ruta donde lo vas a guardar...
Este comentario ha sido eliminado por el autor.
ResponderEliminarHola!! de que manera lo implemento en una interfaz gráfica.
ResponderEliminarpamela es fácil solo crea un método y le introduces el siguiente código:
Eliminartry
{
//Crear un objeto File se encarga de crear o abrir acceso a un archivo que se especifica en su constructor
File archivo=new File("texto.txt");
//Crear objeto FileWriter que sera el que nos ayude a escribir sobre archivo
FileWriter escribir=new FileWriter(archivo,true);
//Escribimos en el archivo con el metodo write
escribir.write(saludo);
//Cerramos la conexion
escribir.close();
}
//Si existe un problema al escribir cae aqui
catch(Exception e)
{
System.out.println("Error al escribir");
}
puedes declarar la variable 'saludos' como global para poder modificarla desde cualquier botón o método
y en un botón solo mandas llamar el método y listo
Amigo como escribo una matriz en un archivo y como la puedo leer de un archivo?
ResponderEliminarSi pudieras ser más especifico con tu pregunta te podría ayudar, ¿qué tipo de matriz?
EliminarHola Pamela, Puedes crear un una JFrame con 3 botones: Leer, guardar, nuevo.
ResponderEliminarTambién puedes ocupar un jTextArea
Cada botón realiza las siguientes funciones.
Leer -> Leer.java -> Obtiene el contenido de un x archivo y lo muestra en el TextArea.
Guardar -> Escribir.java -> Crear un archivo con el contenido del jTextArea.
Nuevo -> Limpiar jTextArea
Bueno Una Pregunta, en el codigo esta establecido un Nombre de Archvio Por Defecto, Como Puedo Grabar El Archivo Pero Con Un Nombre Asignado Por el Usuario. Saludos @MastecSyT
ResponderEliminarHola amigo, lo más fácil sería en lugar de hacer esto:
EliminarFile archivo=new File("texto.txt");
Hacer esto:
Scanner t=new Scanner(System.in);
System.out.println("Nombre para archivo:");
String nombreArchivo=t.next();
File archivo=new File(nombreArchivo);
Esto si es desde consola, puedes hacerlo con JFileChooser pero se verá raro, puesto que es mezclar una aplicación de consola con una de interfaz gráfica.
hola, fijate que no me funciona si pongo "\n", las lineas simpre me siguen saliendo en una sola fila. de antemano...Gracias
ResponderEliminarHola, puedes utilizar el mètodo newLine(); en el objeto out, ese genera un salto de linea, saludos.
EliminarHola, disculpa estoy tratando de hacer un archivo de registros en txt, pero quiero leer cada registro y como podría limitarlos.
ResponderEliminarHola amigo, yo te podrìa recomendar utilizar algun simbolo para dividir los registros, por ejemplo: Jesus Alberto?19?Huatusco|Juan ramirez?24?Cordoba.
EliminarSi utilizas un split y usas el simbolo de | obtendras una fila de registros, y cada una de esas filas les hace otro split usando el ? obtendras cada campo.
Espero te sea de ayuda mi idea, saludos.
muy buen aporte
ResponderEliminarGracias por visitarnos :D Saludos.
Eliminargracias bro !!!
ResponderEliminarDe nada, gracias por visitar el blog.
EliminarNecesito crear un archivo .txt a partir del contenido de los archivos .txt que haya en una carpeta, es decir, que sólo extraiga el texto de los archivos *.txt, mas no de los *.doc
ResponderEliminarSerá que alguien puede darme una mano con esto?
Leería cualquier tipo de archivo? específicamente tiene que set un .txt?
ResponderEliminarHola amigo, si puedes leer cualquier archivo siempre y cuando su contenido sea texto, saludos.
Eliminarmuy bueno el programa!!
ResponderEliminarGracias, saludos :)
EliminarMuy buen aporte, pero tengo una duda, como hago para que me escriba en el archivo txt el resultado de un analizador lexico (ya tengo el analizador, solo quiero saber como imprimir o escribir los resultados en el achivo de texto)
ResponderEliminarUna forma sencilla, basándose en los ejemplos anteriores, tienes que modificar la línea que tiene el siguiente contenido:
EliminarString saludo="Hola";
El contenido que deseas guardar debe ser el que se le está asignando al objeto "saludo". El código que continua no necesitas realizarle modificaciones.
Me ha servido muchisimo! Eternamente gracias, ya que casi todos los scripts que hay en la web cuando los copias siempre hay algun error. En este nada! Sos un groso!
ResponderEliminarGracias :D me alegra que te haya podido ayudar, saludos.
ResponderEliminarHola , oye , no se donde se guarda mi archivo
ResponderEliminarHola, ¿Qué tal?, respondiendo tu pregunta, el archivo se debe guardar exactamente donde tu compilaste y ejecutaste tu clase. Si necesitas especificar un lugar te recomiendo utilices lo siguiente:
EliminarFile archivo=new File("c:/Carpeta/texto.txt");
Declara el objeto archivo indicando una ruta.
Saludos.
Hola, felicidades por tu aporte!. Tengo una pregunta, cómo puedo hacer para que en mi archivo de texto pueda escribir en formato de columnas, por ejemplo, lanzar datos diferentes en el txt y que escriba de esta forma:
ResponderEliminarAna Sandy Ricardo David Nicolas
Diana Fernando Irma Karla Carlos
Espero haberme dado a entender, gracias.
Saludos :)
¿Qué tal? Creo que por el formato de respuesta no logré ver lo que me querías mostrar pero supongo que quieres que se vea como si fuera una tabla no? Para eso lo que yo uso sería un /t para colocar tabulaciones, el problema es cuando algunas palabras son mas grandes que otras pasaría que no quedarían los textos en las mismas "columnas". Espero eso te ayude, saludos.
Eliminarhola como le puedo hacer para q yo escriba algo y se guarde en el bloc saludos
ResponderEliminarPerdón, no entendí muy bien tu pregunta, ¿podrías ser más específico?
EliminarComo puedo crear dos archivos txt y ordenar los datos ingresados en los dos archivos... siendo los datos int?????
EliminarHola, saludos, yo tengo muchas dudas debido a que no se manejar bien los archivos, pero mi profesor nos dejo guardar dos arreglos de tipo reales en un archivo cada arreglo, la verdad no tengo idea de como hacer eso, también nos dejo crear un tercer archivo intercalar el contenido de los dos archivos quedando ordenados, espero y puedan ayudarme, es un proyecto de mi semestre, de antemano muchas gracias.
ResponderEliminarquisiera saber como puedo respetar la primera y ultima letra que esta dentro de lo que escribí en el archivo ojala y me puedan ayudar
ResponderEliminarhay gueeeeeeeeeeeeeee
ResponderEliminarque buen codigo!
muchas gracias x3
Un gusto ayudarte :)
Eliminarbuenas una pregunta teng un programa en java eclipse y lo hice ejecutable y quiero q la informacion q grabe en el doc de texto me lo presente automaticamente cuando se tenga qpresentarse me pueden ayudar!! gracias de ante mano!!!
ResponderEliminarQue tal, con gusto te ayudo, solo que no entendí bien lo que necesitas hacer y bueno... te respondo esto varios días después, si gustas contáctame a mi correo jast1000@gmail.com saludos.
EliminarHola buenas tardes, te acabo de mandar un correo a jast1000@gmail.com comentandote mi codigo para ver si me puedes orientar... que necesitaría hacer?? Lo que intento hacer es cargar un archivo XML desde cualquier ruta y sin un nombre definido para luego sacar de ese archivo XML un dato de un nodo en particular... :( Ojala que si me puedas orientar... =O
ResponderEliminarhola, mi duda es: en la linea
ResponderEliminarFile archivo=new File("c:/Carpeta/texto.txt"); como especifico la ruta de almacenamiento pero con un nombre dinamico al archivo (jalado de una base de datos)????
ejemplo nombre dinamico jalado de la base de datos: nombre dinamico=juan..nombre dinamico=pedro... nombre dinamico=jose
resultado:
C:/Carpeta/juan.txt
C:/Carpeta/pedro.txt
C:/Carpeta/jose.txt
¿Qué tal? El tema aquí es que por tu parte debes obtener los datos de una tabla en base de datos y un campo por Ej. NOMBRE guardar su valor en una variable. Después en el constructor de File agregar un path + la variable donde guardaste el valor obtenido de la tabla. Saludos.
EliminarNECESITO UN PRORAMA QUE IMPRIMA LA TABLA DE VALORES ASCII COMPLETA, ADEMAS LA MANDE A UN ARCHIVO DE TEXTO.
ResponderEliminarBuenas tardes cochux esta muy bueno el código pero tengo una pregunta sabes como abrir y guardar los datos que estén en un archivo txt. En un programa de java. Pero quiero que los datos los muestre en forma de tabla e implementar una foto y si es posible una huella... Ya que tengo un proyecto de grado que es sobre votación... O guardar el archivo txt en sql server.. Espero que me puedas ayudar
ResponderEliminarMuy buen aprote, solo que tengo un pregunta......como hago crarme dos archivos .txt y luego usar sus direcciones para almacenar datos....
ResponderEliminartengo esto:
File archivo = new File("C:\\carpeta\\texto.txt");
archivo.mkdir();
esto lo que hace es crarme dos carpeta..el archivo .txt no lo crea
thfhfhf
ResponderEliminarLo maximo, me has salvado de una. Muchas gracias
ResponderEliminarMe ha sido muy útil! Sencillo, bien explicado. Gracias por tu aporte!
ResponderEliminarUn saludo
disculpa hice una agenda la cual crea un txt con la información pero quiero que me haga otro txt con otra nueva informacion
ResponderEliminarHola amigo quiera saber si ese archivo de guarda en algún lado y donde esta
ResponderEliminaroye sabes como puedo hacer para que ese archivo de texto pueda ser evaluado por un patron de analizador lexico
ResponderEliminarhola, amigos.. alguien me puede ayudar. como puedo hacer que en una app el enter no me lo cuente como un caracter??
ResponderEliminar
ResponderEliminarHola tengo en la GUI un Label que se llama Nombre y a su costado un jTextField
como haria para que al pulsar el boton aceptar
se guarde el nombre ingresado en el JTextField en un archivo de texto
¿Como guardo la información de un registro en un archivo?
ResponderEliminarhola amigo me encanto tu publicación de mucha ayuda pero tengo una duda
ResponderEliminarcomo puedo hacer el método de modificar el texto antes guardado y el método de borra el archivo guardado
Hola , mi pregunta es se como se podría guardar una clase en un archivo , es decir guardar toda la información que tiene una clase concreta . Gracias
ResponderEliminarHol me am pedido que aga esto
ResponderEliminaral abrir archivo "empleado.ser" si no existe lo crea y te despliega el menu
si existe que muestre los datos y muestre menu
al salir (4) que guarde los datos en el texto
ESTE ES EL CODIGO:
import java.io.*;
import java.util.Scanner;
import java.io.IOException;
public class Archivo{
private static Departamento departamento;
private static Scanner teclado = new Scanner(System.in);
BufferedWriter bw;
public static void main(String [] args) throws ClassNotFoundException,IOException{
File archivoEntrada=new File("C:\\Users\\Eyva\\Desktop\\empleado.txt");
BufferedWriter bw;
if(archivoEntrada.exists()){
System.out.println("el archivo si existe");
System.out.println("Nombre del archivo "+archivoEntrada.getName());
System.out.println("Camino "+archivoEntrada.getPath());
System.out.println("Camino absoluto "+archivoEntrada.getAbsolutePath());
System.out.println("Se puede escribir "+archivoEntrada.canRead());
System.out.println("Se puede leer "+archivoEntrada.canWrite());
System.out.println("Tamaño "+archivoEntrada.length());
}
else{
System.out.println("el archivo no existe");
archivoEntrada.createNewFile();
System.out.println(archivoEntrada.getName()+" Ha sido creado");
}
int opcion=0;
departamento = pedirDepartamento();
int opc = 0;
while(opc != 4){
opc = menu();
switch (opc) {
case 1:
departamento.setEmpleado(pedirEmpleado());
break;
case 2:
departamento.eliminarEmpleado(departamento.buscaEmpleado(pedirClaveEmpleado()));
break;
case 3:
listarEmpleados();
break;
case 4:
System.out.println("Cerrando...");
break;
default:
System.out.println("Opción inválida");
}
}
}
public static int menu(){
System.out.println("1. Contratar empleado");
System.out.println("2. Liquidar empleado");
System.out.println("3. Listar empleados del departamento");
System.out.println("4. Salir");
return teclado.nextInt();
}
public static Empleado pedirEmpleado(){
System.out.printf("%s%n%s%n%s%n%s%n","Escribe la clave del empleado ", "curp","nombre y " ,"antigüedad del empleado ");
Empleado e = new Empleado(teclado.nextInt(),teclado.next(), teclado.next());
e.setAntiguedad(teclado.nextInt());
e.setPuesto(pedirPuesto());
return e;
}
public static Puesto pedirPuesto(){
System.out.printf("%s%n%s%n","Escribe los datos del puesto: ", "clave, nombre, clave presupuestal y sueldo base");
Puesto p = new Puesto(teclado.nextInt(), teclado.next(), teclado.next());
return p;
}
public static Departamento pedirDepartamento(){
System.out.printf("%s%n%s%n","Escribe el nombre del departamento y", " cantidad de empleados");
Departamento d = new Departamento(teclado.next(), teclado.nextInt());
return d;
}
public static int pedirClaveEmpleado(){
System.out.printf("%s%n","Escribe la clave del empleado a buscar: ");
return teclado.nextInt();
}
public static void listarEmpleados(){
try{
for(Empleado e: departamento.getEmpleados())
System.out.printf("%s%n", e.toString());
}
catch(Exception e){
System.err.println("Error"+ e);
}
}
}
Este comentario ha sido eliminado por el autor.
ResponderEliminarCómo puedo guardar el contenido del archivo del texto de manera vertical?
ResponderEliminarhola buenos días tengo problemas con un código no estoy muy claro de como hacerlo quisiera que me brindaran su ayuda.
ResponderEliminarBueno espero que no sea abuso pero si me pueden corregir el código, necesito que almacene mas de una empresa, que me permita borrar una empresa pero buscándola por su rif y que me permita borrar una de la misma manera aquí esta el código de lo que llevo
lo necesito para pasar de semestre muchas gracias
package ejercicio01;
import java.util.Scanner;
import java.io.*;
public class Ejercicio01 {
public static void mostrarMenu() {
Scanner teclado = new Scanner(System.in);
int opcion;
do {
System.out.println("1-.Agregar Empresa");
System.out.println("2-.Mostrar Empresa");
System.out.println("3-.Modificar Empresa");
System.out.println("4-.Eliminar Empresa");
System.out.println("5-.Salir");
opcion = teclado.nextInt();
switch (opcion) {
case 1: {
crearFichero();
break;
}
case 2: {
mostrarFichero();
break;
}
case 3: {
break;
}
case 4: {
break;
}
case 5: {
System.out.println("usted desea salir");
System.out.println("1) para si 2) para no ");
if(opcion !=1 ){
opcion = teclado.nextInt();
opcion=4+opcion;
}
opcion=opcion;
}
break;
default: {
System.out.println("Opcion incorrecta");
}
}
} while (opcion != 5);
}
public static void crearFichero() {
FileWriter fw = null;
try {
fw = new FileWriter("empresa.txt");
PrintWriter pw = new PrintWriter(fw);
escribirFichero(pw);
} catch(Exception e){
e.printStackTrace();
} finally {
try {
if (fw != null) {
fw.close();
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Os dejo un pequeño ejemplo para leer e imprimir de un fichero binario y otro de texto. Espero que os sirva de ayuda
ResponderEliminarEjemplo: vamos a sacar informacion de un fichero binario que tiene informacion sobre Personas
public List getListadoDetallePersona() throws ClassNotFoundException {
List personas = new ArrayList ();
File file = new File ("ruta del fichero binario");
File file1 = new File ("ruta del fichero de texto");
try{
FileInputStream fichero = new FileInputStream(file);
FileReader fichero1 = new FileReader(file1);
ObjectInputStream inputStream = new ObjectInputStream(fichero);
personas = (List) inputStream.readObject();
//Recorrer las personas (archivo Binario)
for (DetallePersona p : personas) {
System.out.print("id Persona: " + p.getIdPersona()+ ", ");
System.out.print("Nombre: " + p.getNombre()+ ", ");
System.out.print("Apellidos: " + p.getApellidos()+ ", ");
System.out.println("Edad: " + p.getEdad());
}
//Para leer contenido archivo de texto
int contenido = fichero1.read();
while (contenido != -1) {
System.out.print((char)contenido);
contenido = fichero1.read();
}
inputStream.close();
fichero.close();
fichero1.close();
} catch (IOException e) {
e.printStackTrace();
}
return personas;
}
y el arcchivo .txt donde se guarda??
ResponderEliminarhola mira yo quiero que el usuario me dicte el nombre del archivo como lo guardo y se lo pongo al archivo para despues mostrarlo
ResponderEliminarhola quisiera que me ayudaran como puedo dar salto de linea de un texto txt
ResponderEliminarFile file = new File("c:\\preguntas.txt");
FileReader fileR;
BufferedReader file2 = null;
try {
fileR = new FileReader(file);
file2 = new BufferedReader(fileR);
} catch (FileNotFoundException e) {
System.out.println("No se encontro el archivo " + file.getName());
}
try {
String lines;
while((lines = file2.readLine()) != null) {
System.out.println(lines);
}
} catch (IOException e) {
}
String lines;
while ((lines = file2.readLine()) != null) {
System.out.println(lines);
}
}
este es mi codigo y quiero que me salte de linea cuando aya un punto y coma y un guion porfavor
jesus alberto buenas noches puede ayudarnos para entender a programar en java y paython? gracias
ResponderEliminarTenia horas busca una forma de hacer esto y ahora encuentro a mi héroe
ResponderEliminarte iras al cielo,,, gracias
ResponderEliminar