Programación General > Java
Simular "dos" En Java
gabpull:
Hola soy nuevo en el foro....y también nuevo en programación...
Estoy tratando de simular el DOS, de cierta manera, en java. Por el momento he utilizado la clase File y la e manipulado con ciertos métodos String para darle los comandos y se pueda guiar. Me han hablado de que con Listas y Nodos se me facilitarían las cosas, pero no se como aplicar las direcciones de los archivos en un Nodo. Si alguien me puede ayudar se lo agradecería...
aqui un ejemplo de lo que he hecho..
--- Código: Text --- static void existe(String a)// a = ls - comando para mostrar lo que contiene un directorio { directorio = new File(inicio); //inicio = "c\\javafile" - carpeta donde inica . y muestra los archivos String info[] = directorio.list(); //int num = info.length; if(directorio.list() != null) { System.out.println("\n\n Tipo Tama¤o Nombre\n"); for(int x = 0; x < info.length; x++) { File otro = new File(info[x]); if(otro.isDirectory()) System.out.println("<DIRECTORIO>\t\t\t\t" + info[x]); else { dosDigitos = new DecimalFormat("0.00"); f = otro.length(); f /= 1024; System.out.println("<ARCHIVO>\t"+dosDigitos.format(f)+" Kbytes\t\t"+info[x]); } }System.out.println("\n\n"); }else System.out.println("\n\n En esta carpeta No ahy Archivos"); }
Drackzer:
Hola.>!!
Es facil realizar el instanciado de archivos con listas y Arboles, o cualuqiera de los otros tipos de estructura de datos conocido, ya sean recursivos o simples....
Bueno, un consejo que te puedo dar, es de que te documentes sobre lo que son las estructuras de datos (en este caso, Litas y Arboles, o tambien lo que son Pilas y Colas), para que entiendas su funcionalildad, y los diversos algoritmos para su utilizacion...
Un ejemplo, te lo mostrare aqui:
--- Código: Text ---import java.io.*;import javax.swing.*; public class Lista{ private Nodo P,Q,T,X,R; boolean Flag; int Refer; BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); private class Nodo { private int Informacion; private Nodo Enlace; } Lista() { Refer=0; P=null; Q=null; R=null; T=null; X=null; } public void InsertarInicio(int Dato) { Nodo Q=new Nodo(); Q.Informacion=Dato; Q.Enlace=P; P=Q; System.out.println("\nInsercion hecha\nRecorre la lista para verificar los datos"); } public void InsertarFinal(int Dato) { T=P; while(T.Enlace!=null) {T=T.Enlace;} Nodo Q=new Nodo(); Q.Informacion=Dato; Q.Enlace=null; T.Enlace=Q; System.out.println("\nInsercion hecha\nRecorre la lista para verificar los datos"); } public void Recorrer() {System.out.println("\nLISTA DE DATOS "); if(P!=null) { Q=P; while(Q!=null) { System.out.println("\n\t"+Q.Informacion+""); Q=Q.Enlace; } } else System.out.println("\nNo Hay Datos en la Lista"); } public void InsertarAntes(int Refer,int Dato) { Q=P; Flag=true; while((Q.Informacion!=Refer)&&(Flag==true)) { if(Q.Enlace!=null) { T=Q; Q=Q.Enlace; } else{ Flag=false; System.out.println("\nNo existe la referencia");} } if(Flag==true) { Nodo X=new Nodo(); X.Informacion=Dato; if(P==Q) { X.Enlace=P; P=X; System.out.println("Insercion hecha\nRecorre la lista para verificar los datos"); } else T.Enlace=X; X.Enlace=Q; System.out.println("Insercion hecha\nRecorre la lista para verificar los datos"); } } public void InsertarDespues(int Refer,int Dato) { Q=P; Flag=true; while((Q.Informacion!=Refer)&&(Flag==true)) { if(Q.Enlace!=null) { Q=Q.Enlace; } else { Flag=false; System.out.println("\nNo existe la referencia"); } } if(Flag==true) { Nodo T=new Nodo(); T.Informacion=Dato; T.Enlace=Q.Enlace; Q.Enlace=T; System.out.println("Insercion hecha\nRecorre la lista para verificar los datos"); } } public void EliminaPrimero() { Q=P; if(Q.Enlace!=null) { P=Q.Enlace; Q=null; } else P=null; System.out.println("Eliminacion hecha..!!\nRecorre la lista para verificar los datos"); } public void ElminaUltimo() { if(P.Enlace==null) { P=null; } else Q=P; while(Q.Enlace!=null) { T=Q; Q=Q.Enlace; } T.Enlace=null; Q=null; System.out.println("Eliminacion hecha..!!\nRecorre la lista para verificar los datos");} public void EliminaX(int X) { Q=P; Flag=true; while((Q.Informacion!=X)&&(Flag==true)) { if(Q.Enlace!=null) { T=Q; Q=Q.Enlace; } else Flag=false; } if(Flag==false) { System.out.println("\nNo esxiste el elemento X"); } else if(P==Q) { P=Q.Enlace; } else T.Enlace=Q.Enlace; Q=null; System.out.println("El elemento "+X+ " fue encontrado\nEliminacion hecha..!!" +"\nRecorre la lista para verificar los datos"); } public void EliminaAntesX(int X) { if(P.Informacion==X) { System.out.println("\nNo hay nodo que preceda a X"); } else Q=P; T=P; Flag=true; while((Q.Informacion!=X)&&(Flag==true)) { if(Q.Enlace!=null) { R=T; T=Q; Q=Q.Enlace; } else Flag=false; } if(Flag==false) { System.out.println("\nNo existe el elemento X"); } else if(P.Enlace==Q) { P=Q; T=null; System.out.println("El elemento "+X+ " fue encontrado\nEliminacion hecha..!!" +"\nRecorre la lista para verificar los datos"); } else R.Enlace=Q; T=null; System.out.println("El elemento "+X+ " fue encontrado\nEliminacion hecha..!!" +"\nRecorre la lista para verificar los datos"); } public void EliminaDespuesX(int X) { Q=P; if(P.Enlace==null) { System.out.println("No hay nodo que le suceda a X"); } else T=P; Flag=true; while((Q.Informacion!=X)&&(Flag==true)) { if(Q.Enlace!=null) { R=T; T=Q; Q=Q.Enlace; } else Flag=false; } if(Flag==false) { System.out.println("El elemento no fue encontrado"); } else System.out.println("El elemento "+X+ " fue encontrado\n"); System.out.println("Eliminacion Hecha..:!!"); System.out.println("\nRecorre la lista para verificar los datos"); T=Q.Enlace; Q.Enlace=T.Enlace; T=null; } public void Busqueda(int X) { Q=P; while((Q!=null)&&(Q.Informacion!=X)) { Q=Q.Enlace; } if(Q==null) { System.out.println("\nEl elemento no fue encontrado"); } else System.out.println("\nEl elemento "+X+" se encuentra en la lista"); } public static void main(String args[]) { Lista obj=new Lista(); int Dato,opcion,Refer,X; String data,opc,ref,x; BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); try{ do { System.out.println("\n\n\t---****<MENU DE OPCIONES>****----\n\n"+ "1.-Insertar al inicio de la lista\n2.-Insertar al final de la lista\n"+ "3.-Insertar Antes de\n4.-Insertar Despues de"+ "\n5.-Recorrer la lista \n6.-Eliminar el primer nodo\n7.-Eliminar el ultimo nodo"+ "\n8.-Eliminar un determinado nodo \n9.-Eliminar un nodo antes de... \n10.-Elimina" +" un nodo despues de..." +"\n11.-Busqueda de un determinado nodo \n12.-<<Salir>> \n\nSelecciona una opcion:"); opc=teclado.readLine(); opcion=Integer.parseInt(opc); switch(opcion) { case 1: try{System.out.println("\nIntroduce un valor para un dato nuevo(entero)"); data=teclado.readLine(); Dato=Integer.parseInt(data); obj.InsertarInicio(Dato);} catch(IOException variablerror) {System.out.println("error de captura ");} break; case 2: try{System.out.println("\nIntroduce un valor para un dato(entero)"); data=teclado.readLine(); Dato=Integer.parseInt(data); obj.InsertarFinal(Dato);} catch(IOException variablerror) {System.out.println("error de captura ");} break; case 3:try{System.out.println("\nIntroduce un valor para un dato nuevo(entero)"); data=teclado.readLine(); Dato=Integer.parseInt(data); System.out.println("\nIntroduce un valor de la lista como referencia"); ref=teclado.readLine(); Refer=Integer.parseInt(ref); obj.InsertarAntes(Refer,Dato);} catch(IOException variablerror) {System.out.println("error de captura ");} break; case 4:try{System.out.println("\nIntroduce un valor para un dato nuevo(entero)"); data=teclado.readLine(); Dato=Integer.parseInt(data); System.out.println("\nIntroduce un valor de la lista como referencia"); ref=teclado.readLine(); Refer=Integer.parseInt(ref); obj.InsertarDespues(Refer,Dato);} catch(IOException variablerror) {System.out.println("error de captura ");} break; case 5: obj.Recorrer(); break; case 6:obj.EliminaPrimero(); break; case 7:obj.ElminaUltimo(); break; case 8:try{System.out.println("Introduce el valor de un elemento de la lista"); x=teclado.readLine(); X=Integer.parseInt(x); obj.EliminaX(X);} catch(IOException variablerror) {System.out.println("error de captura ");} break; case 9:try{System.out.println("Introduce el valor de un elemento de la lista"); x=teclado.readLine(); X=Integer.parseInt(x); obj.EliminaAntesX(X);} catch(IOException variablerror) {System.out.println("error de captura ");} break; case 10:try{System.out.println("Introduce el valor de un elemento de la lista"); x=teclado.readLine(); X=Integer.parseInt(x); obj.EliminaDespuesX(X);} catch(IOException variablerror) {System.out.println("error de captura ");} break; case 11:try{System.out.println("Introduce el valor de un elemento de la lista"); x=teclado.readLine(); X=Integer.parseInt(x); obj.Busqueda(X);} catch(IOException variablerror) {System.out.println("error de captura ");} break; case 12: System.out.println("\nHaz elegido la opcion de salida\n\nGracias Por utilizar Dra@ckzer software"); System.exit(0); break; } } while(opcion!=12); } catch(IOException variablerror) {System.out.println("error de captura ");} } }
Un poko largo, no?? :P
Es un ejemplo CODIGO de un programa que simula una lista de datos para guardar datos tipo entero, es decir, numeros, pero los algoritmos aqui implementados, son algoritmos universales, para todo lenguaje de programacion, y para todo tipo de datos, asi que no hay pierde..!!
Nota: La fuente de estos algoritmos, lo puedes encontrar en el libro "Estructura de datos" de la Ed. Mc Graw Hill..
Si te fijas, los nodos los cree en una clase llamada Nodo, que tambien cree.. pero estan siendo inicializados en el constructor, y en la clase principal...
sale y Suerte compa..!!
Drackzer:
de hecho, no se porque llame a la libreria del Swing.... :blink:
jejej :unsure: don't worry..!!
gabpull:
hey muchas gracias ... Drackzer
de hecho yo hasta ahora estoy conociendo lo que son Nodo ... Listas... Pilas... y Colas...
lo que me cuesta un poco es como integrar las direcciones de los archivos en un Nodo de tal manera que pueda crear una carpeta y luego acceder a ella, y de igual manera devolverme a la anterior .... en estos dias he podido realizar estas funciones, utilizando mis pocos conocimientos con las pilas...
pero igual gracias. el codigo que pusiste me va a alludar un poco mas con esta simulacion del "DOS"...
Talvez despues, cuando tenga mas amarrado mi codigo lo ponga aqui para aquellas personas que les interese...
Drackzer:
De nada, y ojala puedas terminar con tu proyecto....
sale compa y despues nos leemos, al radio.. ROCK!!
Navegación
[#] Página Siguiente
Ir a la versión completa