2012-04-10 327 views
25

Soy un novato en Java. Intento elegir dinámicamente la ubicación del archivo para guardar el resultado de mi proyecto (que se iniciará al inicio de mi proyecto). Trabajé con algunos ejemplos de FileDialog, pero cada uno me permite elegir un archivo y no una carpeta.¿Seleccionar el destino de la carpeta en Java?

¿Alguien puede ayudarme con un ejemplo (o) vincular a uno para lo mismo?

+1

Bien, este es un buen comienzo. Parece que has hecho una investigación. ¿Puedes incluir algunos ejemplos de lo que probaste? Eso ayudará a otros a trabajar con lo que ya sabes. – jmort253

+0

Sure Will..Dame un momento – Sam

Respuesta

49

Usted podría intentar algo como esto (como se muestra aquí: Select a Directory with a JFileChooser):

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


public class DemoJFileChooser extends JPanel 
    implements ActionListener { 
    JButton go; 

    JFileChooser chooser; 
    String choosertitle; 

    public DemoJFileChooser() { 
    go = new JButton("Do it"); 
    go.addActionListener(this); 
    add(go); 
    } 

    public void actionPerformed(ActionEvent e) {    
    chooser = new JFileChooser(); 
    chooser.setCurrentDirectory(new java.io.File(".")); 
    chooser.setDialogTitle(choosertitle); 
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
    // 
    // disable the "All files" option. 
    // 
    chooser.setAcceptAllFileFilterUsed(false); 
    //  
    if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { 
     System.out.println("getCurrentDirectory(): " 
     + chooser.getCurrentDirectory()); 
     System.out.println("getSelectedFile() : " 
     + chooser.getSelectedFile()); 
     } 
    else { 
     System.out.println("No Selection "); 
     } 
    } 

    public Dimension getPreferredSize(){ 
    return new Dimension(200, 200); 
    } 

    public static void main(String s[]) { 
    JFrame frame = new JFrame(""); 
    DemoJFileChooser panel = new DemoJFileChooser(); 
    frame.addWindowListener(
     new WindowAdapter() { 
     public void windowClosing(WindowEvent e) { 
      System.exit(0); 
      } 
     } 
    ); 
    frame.getContentPane().add(panel,"Center"); 
    frame.setSize(panel.getPreferredSize()); 
    frame.setVisible(true); 
    } 
} 
+0

Muchas gracias Chicos ... Hace exactamente lo que necesitaba .. Quería hacer algo con los puntos de "Utilidad de esta respuesta" para usted ... Pero aparentemente necesito 15 puntos de reputación :( – Sam

+0

@ Sam: Por lo general, marcar la marca verde "muy bueno" debajo del puntaje de respuesta es el truco. – npinti

+0

¿Para qué se utiliza 'int result'? – user2084795

9

intentar algo como esto

JFileChooser chooser = new JFileChooser(); 
chooser.setCurrentDirectory(new java.io.File(".")); 
chooser.setDialogTitle("select folder"); 
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
chooser.setAcceptAllFileFilterUsed(false); 
+0

Muchas gracias ... Permítanme comenzar a experimentar en esta dirección – Sam

+0

¿Cuál es el sentido de "chooser.setCurrentDirectory (new java.io.File (". "));" línea. realmente no lo entiendo – cssGEEK

+2

@cssGEEK quizás sea demasiado tarde para responder, pero lo hace para que el diálogo comience en el directorio actual. En Unix (al menos), cada directorio tiene una carpeta llamada '.' y una carpeta llamada' ..'. El primero es una referencia al mismo directorio, y el último es el directorio padre. En Java, la cadena que le das al constructor de 'File' es una ruta relativa si no comienza con'/'(Unix) o' X: \ '(Windows), así que si le das". ", es una carpeta relativa a donde está el directorio actual del programa. Eso hará que el selector apunte al directorio actual donde se está ejecutando el programa. –

20

oráculos de Java Tutorial para los selectores de archivos: http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html

Nota getSelectedFile() devuelve la carpeta seleccionada, a pesar del nombre. getCurrentDirectory() devuelve el directorio de la carpeta seleccionada.

import javax.swing.*; 

public class Example 
{ 
    public static void main(String[] args) 
    { 
     JFileChooser f = new JFileChooser(); 
     f.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
     f.showSaveDialog(null); 

     System.out.println(f.getCurrentDirectory()); 
     System.out.println(f.getSelectedFile()); 
    }  
} 
0

He encontrado un buen ejemplo de lo que necesita en this link.

import javax.swing.JFileChooser; 

public class Main { 
    public static void main(String s[]) { 
    JFileChooser chooser = new JFileChooser(); 
    chooser.setCurrentDirectory(new java.io.File(".")); 
    chooser.setDialogTitle("choosertitle"); 
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
    chooser.setAcceptAllFileFilterUsed(false); 

    if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { 
     System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory()); 
     System.out.println("getSelectedFile() : " + chooser.getSelectedFile()); 
    } else { 
     System.out.println("No Selection "); 
    } 
    } 
} 
Cuestiones relacionadas