Ayuda con un programa de Java

maggot-8

Bovino maduro
#1
Buenas hermanos ba-kunos, vengo a recurrir a su ayuda...otra vez.

El problema es que estoy haciendo un programa en Java, donde el objetivo es que funcione como CMD, osea, que pueda escribir archivos .txt, crear, eliminar, y moverme entre las carpetas del disco duro, todo esto a través de comandos, que yo le pueda meter.
Hasta ahora, puedo mostar el contenido del directorio en el que estoy, esto abriendo el verdadero CMD, enviandole el comando 'dir' y luego leyendo la respuesta del CMD, el problema es que utilizo un "Process" para esto, y le paso el parametro 'dir', pero luego si quiero hacer otra cosa no puedo, no se como escribir otra instruccion sin tener que abrir otra vez el programa....
aqui les dejo el codigo

Código:
import java.io.*;
public class pruebaExe
{
     public static void main(String []Argv) {
         try 
        { 
            // Se lanza el ejecutable. 
            Process p=Runtime.getRuntime().exec ("cmd /c dir"); 
             
            // Se obtiene el stream de salida del programa 
            InputStream is = p.getInputStream(); 
             
            /* Se prepara un bufferedReader para poder leer la salida más comodamente. */ 
            BufferedReader br = new BufferedReader (new InputStreamReader (is)); 
             
            // Se lee la primera linea 
            String aux = br.readLine(); 
             
            // Mientras se haya leido alguna linea 
            while ((aux = br.readLine())!=null) 
            { 
                // Se escribe la linea en pantalla 
                System.out.println (aux); 
            }
            
        }  
        catch (Exception e) 
        { 
            // Excepciones si hay algún problema al arrancar el ejecutable o al leer su salida.*/
            e.printStackTrace(); 
        } 

     }
}
intente hacer esto:
p=Runtime.getRuntime().exec ("/c cd..");
p=Runtime.getRuntime().exec ("/c dir");
Esto lo hice para que ahora imprimiera los directorios de una carpeta atras, pero no lo hizo, creo que sencillamente no es el .exec, o no se la verdad, ayuda por favor.

Tambien se usar visual por si piensan que es mejor en este caso usar visual que java, lei que se puede hacer una consola, el problema es que no se como moverme de una carpeta a otra, y mostrar en que carpeta estoy.....

Gracias de antemano hermanos Bakunos
 

Salandrews

Bovino maduro
#2
Para realizar las tareas que necesitas, debes crear primero la "consola" donde debes leer los comandos que el usuario ingrese, ya sea que utilices la nomenclatura que maneja el CMD (dir, cd, etc) o bien que te inventes tu propia nomenclatura (abrir, subir nivel, bajar nivel, mostrar, etc). Esta consola debe leer el comando y los parámetros que el usuario ingresa.

Luego, debes crear los métodos asociados a cada una de estas tareas, donde utilizarás el Runtime para enviarle los parámetros que el usuario ingresó, y como sabes que comando ingresó el usuario, sabes también a qué método enviarle los parámetros. También debes definir antes en que ubicación empezará la aplicación, por ejemplo "C". De esta manera, si recibes un comando como "dir" ya sabes que en directorio te encuentras.

Por ejemplo:

Consola de Prueba Java
--Ingrese instruccion
C:\_

Consola de Prueba Java
--Ingrese instruccion
C:\cd c

Cuando el usuario presione enter, debes leer la instrucción e identificar cuál es el comando, en este caso, "cd", y luego el parámetro, en este caso "c". Debes tener un método abrirDirectorio(string ruta) al que le enviarás el parámetro "c" y que ejecutará el Runtime(cd ruta).

Consola de Prueba Java
--Ingrese instruccion
C:\cd c
C:\dir

Ahora recibes el comando "dir", debes invocar al método mostrarDirectorio(ruta) en este caso como no recibes un parámetro, tomas como tal la ubicación actual que es "C" y se lo envías al método. Y así sucesivamente con cada comando, puede dejar a la consola esperando indefinidamente por un comando si lo metes en un ciclo que solo se rompa cuando el usuario ingrese por ejemplo, el comando "exit".

Espero te haya ayudado en algo, si tienes más dudas pregunta e intentaremos ayudarte.
 
Arriba