domingo, 29 de noviembre de 2015

Tipos Generios en Java

//HOLA AQUÍ MOSTRAMOS TIPOS GENERICOS EN JAVA SON MUY UTILIZADOS PARA PARAMETRIZAR LOS DATOS Y MEJORES PARA TRABAJAR CON INTERFACES 

usenlos para q tengan muchos bugs








jueves, 26 de noviembre de 2015

Ejemplo de GUI "ID de usuario y Contraseña"


//simplemente crean la siguiente interfaz en el editor de NetBeans, registran los usuario y contraseña
//puede ser en una tabla de usuarios y le dan la acción para que al aceptar te muestre la ventana
//jueguen con el código es de gran importancia para un aplicativo :V






//lo mas importante esta resaltado 

import javax.swing.JOptionPane;

/**
 *
 * @author JUAN
 */
public class Form1 extends javax.swing.JFrame {

    /**
     * Creates new form Form1
     */
    public Form1() {
        initComponents();

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jPasswordField1 = new javax.swing.JPasswordField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("Usuario");

        jLabel2.setText("Contraseña");

        jButton1.setText("aceptar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("cancelar");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(69, 69, 69)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jButton1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jButton2))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel2)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(10, 10, 10)
                                .addComponent(jLabel1)))
                        .addGap(53, 53, 53)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(8, 8, 8)))
                .addContainerGap(70, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(65, 65, 65)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addGap(40, 40, 40)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel2)
                    .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton1)
                    .addComponent(jButton2))
                .addGap(32, 32, 32))
        );

        pack();
    }// </editor-fold>                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        if (jTextField1.getText().equals("admin") && jPasswordField1.getText().equals("admin")) {
            NewJFrame nf = new NewJFrame();
            nf.show();
            this.setVisible(false);
        }else{
            JOptionPane.showMessageDialog(this, "Usted no esta registrado");
        }
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Form1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Form1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Form1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Form1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Form1().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPasswordField jPasswordField1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   
}

Una introducción a la programación de videojuegos

En esta entrada hablare sobre la información que vengo recopilando desde ya hace un tiempo sobre este complejo tema, como los lenguajes predominantes en la programación de juegos y por que algunos no lo son, también mencionare algunos de los motores gráficos mas recomendables, señalando algunas de las funcionalidades que todo novato debería conocer.

Para compensar empezaré desde lo mas superfluo y asta los un poco mas específicos hasta este punto ya deberíamos tener claro que necesitamos un lenguaje de programación..

Bueno para compensar claros y concisos tengo que decir que lenguaje por excelencia usado en la historia del desarrollo de los videojuegos profesionales ha sido C y desde la última es C++, debido a las ventajas que este posee, ya que hace uso del paradigma de la programación orientada a objetos, aunque también podemos usar características de la programación procedimental de C, además de esto hay que tener en cuenta c++ es un lenguaje de programación de bajo nivel por lo tanto llega al hardware mucho antes que un lenguaje de alto nivel como Java por lo que c++ termina dando resultados mucho más fluidos.

Hoy en día disponemos de un conjunto de bibliotecas que nos facilitan el uso de estructuras de datos en nuestros programas, estamos hablando de la biblioteca STL (Standard Template Library), la cual ya es un standard de C++, y lo podemos encontrar en todos los compiladores actuales.

Lo siguiente que necesita un desarrollador especialmente si va en solitario es un buen "Game engine" o "Motor de juegos" que nos facilitaran una gran cantidad de rutinas básicas y avanzadas que serán comunes y repetitivas en cualquier proyecto que vayamos a realizar, como por ejemplo al momento de cargar imágenes.

Hoy en día existen una gran variedad de motores completos y motores gráficos como OGRE 3D que es un motor gráfico gratuito con "open-source" para que el usuario pueda crear aplicaciones desde el lenguaje C++. OGRE 3D su propósito principal es proveer una solución general para el renderizado de gráficos. A pesar que incorpora otras características (clases de vector y matrices, manejo de memoria, etc.), son consideradas suplementarias. No es una solución todo-en-uno desde el punto de vista del desarrollo de juegos o simulación ya que no provee soporte para físicas y audio pero ante esto se puede acotar que OGRE como un motor gráfico otorga a los desarrolladores la libertad de usar librerías de física, entrada, audio y otras que deseen.

http://m.youtube.com/#/watch?v=obWkjRIVvBQ

No cuenta con interfase gráfica pero puede ser fácilmente integrado a otros compiladores de c++ como CodeBlocks, Dev c++ inclusive al visual c++ en el visual studio.

http://m.youtube.com/watch?v=xtSW4tHgH48

Además de este motor de código libre existe una gama inmensa de motores de juegos que nos facilitan mucho la tarea, también se encuentran los muy complejos ahí libres como hay de pago pero pero muchos de estos nos veremos en posteriores entradas.

sábado, 21 de noviembre de 2015


La memoria USB más pequeña del mundo

Tiene el tamaño de una uña. No en vano SanDisk, su fabricante, se refiere a ella como a la memoria USB más pequeña del mundo. Se trata del SanDisk Ultra Fit USB 3.0. Pero el tamaño no debe engañarnos, ya que en su interior podemos almacenar hasta 128 GB de documentos, fotos, películas o música. Todo un arsenal multimedia, en definitiva, que podemos llevar en un bolsillo sin darnos cuenta siquiera de que está allí.
Pero la Ultra Fit USB no solo destaca por su reducido tamaño, sino por su impresionante velocidad de lectura y transferencia de archivos, ya que el minúsculo dispositivo incorpora USB 3.0, diez veces más rápido que el anterior USB 2.0 y que es capaz de alcanzar velocidades de lectura de hasta 130 MB/s. O lo que es lo mismo, podemos transferir una película entera en menos de 40 segundos.
Se puede elegir entre modelos de 16, 32, 64 y 128 GB. Y sus precios, respectivamente, son de 7,59, 14,13,28,28 y 56,54 euros. El dispositivo lleva incluido el software SanDisk Secure Access, gracias al que es posible crear una carpeta privada y protegida por contraseña dentro de la misma unidad.
Los archivos que guardemos en esa carpeta están protegidos por la codificación AES de 128 bits, lo que garantiza la privacidad de su contenido incluso si decidimos compartir la unidad USB. Por último, se incluye una suscripción gratuita de un año al software RescuePRO, que nos permite tener una copia de seguridad en la nube a la que podemos acceder en todo momento para recuperar archivos perdidos o borrados de forma accidental.

miércoles, 18 de noviembre de 2015


                                     PRINCIPIO DEL UML




 El lenguaje UML comenzó a gestarse en octubre de 1994, cuando Rumbaugh se unió a la compañía Rational fundada por Booch (dos reputados investigadores en el área de metodología del software).
El objetivo de ambos era unificar dos métodos que habían desarrollado: el método Booch y el OMT (Object Modelling Tool ). El primer borrador apareció en octubre de 1995. En esa misma época otro reputado investigador, Jacobson, se unió a Rational y se incluyeron ideas suyas. Estas tres personas son conocidas como los “tres amigos”. Además, este lenguaje se abrió a la colaboración de otras empresas para que aportaran sus ideas. Todas estas colaboraciones condujeron a la definición de la primera versión de UML.

GUI CON OBJETOS EN UNA TABLA

//este programa trabaja con un arreglo de objeto
//para ello se crean diferentes clases y se le llama en un formulario



public class Persona {
    private String codigo;
    private String nombre;
    private String apellidos;
    private int edad;

    public Persona(String codigo, String nombre, String apellidos, int edad) {
        this.codigo = codigo;
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.edad = edad;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }
   
}

//--------------------

package GUItabla_arrayList;

import java.util.ArrayList;

/**
 *
 * @author CARLOS-D
 */
public class Personas {
    private ArrayList personas;
    private int max_personas=20;
    
    public Personas(){
        personas=new ArrayList(max_personas);
    }
    
    public void addPersona(Persona p){
        if (personas.size()<max_personas) {
            personas.add(p);
        }else{
            System.out.println("El arreglo esta lleno");
        }
    }
    
    public Persona getPersona(int index){
        return (Persona) personas.get(index);
    }
    
    public int cantidad(){
        return personas.size();
    }
    
    public boolean validar_codigo(String codigo){
        for (int i = 0; i < personas.size(); i++) {
            if (getPersona(i).getCodigo().equals(codigo)) {
                return true;
            }
        }
        return false;
    }
    
    public int suma_total_edades(){
        int suma_edad=0;
        for (int i = 0; i < personas.size(); i++) {
            suma_edad=suma_edad+getPersona(i).getEdad();
        }
        return suma_edad;
    }
    
    public void actualizarPersona(String codigo,Persona p){
        boolean estado=false;
        
        for (int i = 0; i < 10; i++) {
            if (getPersona(i).getCodigo().equals(codigo)) {
                estado=true;
                personas.set(i, p);
            }
        }
        if (estado==false) {
            System.out.println("Elemento no encontrado");
        }
    }
    
    public void eliminarPersona(String codigo,Persona p){
        boolean estado=false;
        
        for (int i = 0; i < 10; i++) {
            if (getPersona(i).getCodigo().equals(codigo)) {
                estado=true;
                personas.remove(i);
            }
        }
        if (estado==false) {
            System.out.println("Elemento no encontrado");
        }
    }
}

//---------------------------------------------
package GUItabla_arrayList;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
/**
 *
 * @author CARLOS-D
 */
public class Form_Persona extends JFrame implements ActionListener{

    private JLabel lblCodigo,lblNombre,lblApellido,lblEdad,lblSumaTotal;
    private JTextField txtfCodigo,txtfNombre,txtfApellido,txtfEdad,txtfSumaTotal;
    private JButton btnAgregar,btnMostrar,btnModificar,btnEliminar;
    private JTable tabResultados;
    private DefaultTableModel dtm;
    private JScrollPane pane;
    private String titulos []={"Codigo", "Nombre", "Apellidos", "Edad"};
    
    
    public Form_Persona(){
        super("Tabla de Personas");
        Init();
    }
    
    Personas personas=new Personas();
    
    public void Init(){
        
        lblCodigo = new JLabel();
        lblCodigo.setText("Codigo");
        lblCodigo.setBounds(20, 20, 100, 25);
        add(lblCodigo);
        txtfCodigo = new JTextField();
        txtfCodigo.setBounds(80, 20, 100, 25);
        add(txtfCodigo);
        
        lblNombre = new JLabel();
        lblNombre.setText("Nombre");
        lblNombre.setBounds(20, 50, 100, 25);
        add(lblNombre);
        txtfNombre = new JTextField();
        txtfNombre.setBounds(80, 50, 100, 25);
        add(txtfNombre);

        lblApellido = new JLabel();
        lblApellido.setText("Apellidos");
        lblApellido.setBounds(20, 80, 100, 25);
        add(lblApellido);
        txtfApellido = new JTextField();
        txtfApellido.setBounds(80, 80, 100, 25);
        add(txtfApellido);

        lblEdad = new JLabel();
        lblEdad.setText("Edad");
        lblEdad.setBounds(20, 110, 100, 25);
        add(lblEdad);
        txtfEdad = new JTextField();
        txtfEdad.setBounds(80, 110, 100, 25);
        add(txtfEdad);
        
        lblSumaTotal = new JLabel();
        lblSumaTotal.setText("Suma Total");
        lblSumaTotal.setBounds(20, 270, 100, 25);
        add(lblSumaTotal);
        txtfSumaTotal = new JTextField();
        txtfSumaTotal.setBounds(100, 270, 100, 25);
        add(txtfSumaTotal);
        txtfSumaTotal.setEditable(false);

        btnAgregar = new JButton();
        btnAgregar.setText("Agregar");
        btnAgregar.setBounds(200, 20, 100, 25);
        add(btnAgregar);
        btnAgregar.addActionListener(this);

        btnMostrar = new JButton();
        btnMostrar.setText("Mostrar");
        btnMostrar.setBounds(200, 50, 100, 25);
        add(btnMostrar);
        btnMostrar.addActionListener(this);
        
        btnEliminar = new JButton();
        btnEliminar.setText("Eliminar");
        btnEliminar.setBounds(200, 80, 100, 25);
        add(btnEliminar);
        btnEliminar.addActionListener(this);
        
        btnModificar = new JButton();
        btnModificar.setText("Modificar");
        btnModificar.setBounds(200, 110, 100, 25);
        add(btnModificar);
        btnModificar.addActionListener(this);
        
        tabResultados= new JTable();
        pane = new JScrollPane(tabResultados);
        pane.setBounds(20, 150, 300, 100);
        add(pane);
        
    }
    
    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(btnAgregar)) {
            String codigo = txtfCodigo.getText();
            String nombre = txtfNombre.getText();
            String apellido = txtfApellido.getText();
            int edad = Integer.parseInt(txtfEdad.getText());
            if (personas.validar_codigo(codigo)==true) {
                JOptionPane.showMessageDialog(null, "Este codigo es repetido");
            }else{
                Persona p1 = new Persona(codigo, nombre, apellido, edad);
                personas.addPersona(p1);
                mostrar_lista();
            }
            
         
            txtfCodigo.setText("");
            txtfNombre.setText("");
            txtfApellido.setText("");
            txtfEdad.setText("");
            //area.append("");  
        }
        if (e.getSource().equals(btnMostrar)) {
           /* for (int i = 0; i < per.getPersona(i); i++) {
                area.append("Nombre: " + ap.getPersona(i).getNombre());
                area.append("\nApellido :" + ap.getPersona(i).getApellido());
                area.append("\nEdad: " + ap.getPersona(i).getEdad()+"\n\n");
            }*/
        }
        if (e.getSource().equals(btnEliminar)) {
            
        }
        if (e.getSource().equals(btnModificar)) {
            
        }
    }
    public void mostrar_lista(){
        Object[] registros = new Object[4];
        dtm = new DefaultTableModel(null,titulos);
        for (int i = 0; i < personas.cantidad(); i++) {
            Persona p = personas.getPersona(i);
            registros[0]=p.getCodigo();
            registros[1]=p.getNombre();
            registros[2]=p.getApellidos();
            registros[3]=p.getEdad();
            dtm.addRow(registros);
        }
        tabResultados.setModel(dtm);
        txtfSumaTotal.setText(""+personas.suma_total_edades());
    }
    
    public static void main(String[] args) {
        Form_Persona fp1 = new Form_Persona();
        fp1.setLayout(null);
        fp1.setVisible(true);
        fp1.setSize(400, 500);
        fp1.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}


OPERACIONES ARIMETICAS CONGUI

// EL SIGUIENTE CÓDIGO MUESTRA UNA SUMA CON UNA PEQUEÑA VENTANA LA CUAL TRABAJA CON UN CONTENEDOR EL CUAL TIENE LOS ITEMS DE SUMA, RESTA,
MULTIPLICACION, DIVICION Y CERRAR

//SERA DE SU GRAN ENTENDIMIENTO COMPRENDER LA LOGICA DEL CODIGO



import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

/**
 *
 * @author CARLOS-D
 */
public class suma extends JFrame{
    Container panel;
    JTextField jtfNum1,jtfNum2,jtfResultado;
    JMenuItem jmiSuma,jmiResta,jmiMultiplicacion,jmiDivicion,jmiCerrar;
    public suma(){
        super("Menùs");
        JMenuBar jmb=new JMenuBar();
        setJMenuBar(jmb);
        JMenu operationMenu=new JMenu("Operacion");
        operationMenu.setMnemonic('o');
        jmb.add(operationMenu);
        operationMenu.add(jmiSuma=new JMenuItem("Suma",'S'));
        operationMenu.add(jmiResta=new JMenuItem("Resta",'R'));
        operationMenu.add(jmiMultiplicacion=new JMenuItem("Multiplicacion",'M'));
        operationMenu.add(jmiDivicion=new JMenuItem("Divicion",'D'));
       
        JMenu exitMenu=new JMenu("Salir");
        jmb.add(exitMenu);
        exitMenu.add(jmiCerrar=new JMenuItem("Cerrar",'C'));
        JPanel p1=new JPanel();
        p1.setLayout(new FlowLayout());
        p1.add(new JLabel("Numero 1"));
        p1.add(jtfNum1=new JTextField(3));
        p1.add(new JLabel("Numero 2"));
        p1.add(jtfNum2=new JTextField(3));
        p1.add(new JLabel("Resultado"));
        p1.add(jtfResultado=new JTextField(4));
        jtfResultado.setEditable(false);
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(p1, BorderLayout.CENTER);
        //registrando oyente
        jmiSuma.addActionListener(new OyenteMenu());
        jmiResta.addActionListener(new OyenteMenu());
        jmiMultiplicacion.addActionListener(new OyenteMenu());
        jmiDivicion.addActionListener(new OyenteMenu());
        jmiCerrar.addActionListener(new OyenteMenu());
    }
    private void calcular(char operador){
        int num1=(Integer.parseInt(jtfNum1.getText().trim()));
        int num2=(Integer.parseInt(jtfNum2.getText().trim()));
        int resultado=0;
        switch(operador){
            case '+': resultado=num1+num2;break;
                case '-': resultado=num1-num2;break;
                    case '*': resultado=num1*num2;break;
                        case '/': resultado=num1/num2;break;
        }
        jtfResultado.setText(String.valueOf(resultado));
    }
    class OyenteMenu implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            String actionCommand=e.getActionCommand();
            if (e.getSource()instanceof JMenuItem) {
                if ("Suma".equals(actionCommand)) calcular('+');
                else if("Resta".equals(actionCommand)) calcular('-');
                else if("Multiplica".equals(actionCommand)) calcular('*');
                else if("Divide".equals(actionCommand)) calcular('/');
                else if("Cerrar".equals(actionCommand)) System.exit(0);
            }
        }
    }
    public static void main(String[] args) {
        suma ventana=new suma();
        ventana.setDefaultCloseOperation(EXIT_ON_CLOSE);
        ventana.pack();
        ventana.setVisible(true);
    }
   
}

lunes, 16 de noviembre de 2015

Ejemplo de Manejo de Archivos de Texto

//EL SIGUIENTE PROGRAMA MUESTRA LA CREACION DE UN ARCHIVO DE TEXTO
//LEE EL ARCHIVO Y ESCRIBE EN EL
//PARA COMPROBARLO VEAN EL ARCHIVO CREADO EN EL DISCO LOCAL D:/
import java.io.*;
/**
 *
 * @author CARLOS-D
 */
public class ej1_Archivos {
    public File crearArchivo(String ruta){
        File file=null;
        try{
            file=new File(ruta);
            if (!file.exists()) {
                file.createNewFile();
            }else{
                System.out.println("el archivo ya fue creado");
            }
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        return file;
       
    }
    public BufferedWriter escribirArchivo(String ruta){
        BufferedWriter bw=null;
        try{
            FileWriter fw=new FileWriter(crearArchivo(ruta));
            bw=new BufferedWriter(fw);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        return bw;
    }
    public BufferedReader leerArchivo(String ruta){
        BufferedReader br=null;
        try{
            FileReader fr=new FileReader(crearArchivo(ruta));
            br=new BufferedReader(fr);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        return br;
    }
   
    public static void main(String[] args) {
        BufferedWriter escribir;
        BufferedReader leer;
        ej1_Archivos archivo=new ej1_Archivos();
        escribir=archivo.escribirArchivo("D:/miArchivo.txt");
        try{
            escribir.write("este es mi archivo");
            escribir.close();
        }catch(Exception e){
            System.out.println("");
        }
       
        leer =archivo.leerArchivo("D:/miArchivo.txt");
        String linea=null;
        try{
            while((linea=leer.readLine())!=null){
                System.out.println(linea);
            }
            leer.close();
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }
}