Make directory from path with desired directory name

I am trying to write a program that allows the user to create a set of folders in a specific location. I've tried a lot so far but nothing seems to work.

To be a little clearer, I have a user entering a folder path (using JFileChooser

) and it will set the directory for them in a textbox ( JTextField

). I would like to know how I can do this so that when a folder is created in a user defined path, it also names the folder appropriately. Here is some "working" example code of what I have so far:

public static void addComponentsToPane(Container pane)
{
    if (RIGHT_TO_LEFT)
    {
        pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
    }
//Components

    pane.setLayout(new GridBagLayout());
    JLabel label;
    GridBagConstraints c = new GridBagConstraints();

    JButton buttonH;
    JButton buttonB;
    JButton cButton;
    JCheckBox checkboxP;
    JCheckBox checkboxV;
    JCheckBox checkboxD;
    JCheckBox checkboxM;


    if(shouldFill)
    {
        c.fill = GridBagConstraints.HORIZONTAL;
    }

//Input Label
    label = new JLabel(" Please Enter Folder Destination ");
    if(shouldWeightX)
    {
        c.weightx = 0.5;
    }
    c.ipady = 10;
    c.fill = GridBagConstraints.BOTH;
    c.gridwidth = 2;
    c.gridx = 0;
    c.gridy = 0;
    pane.add(label, c);
//Blank Label
    label = new JLabel ("  ");
    c.fill = GridBagConstraints.BOTH;
    c.ipady = 5;
    c.gridx = 2;
    c.gridy = 1;
    pane.add(label, c);

//Text Field
    text = new JTextField(" Folder Path ");
    c.ipady = 0;
    c.fill = GridBagConstraints.BOTH;
    c.weightx = 0.0;
    c.gridx = 0;
    c.gridy = 2;
    c.gridwidth = 3;
    pane.add(text, c);
    text.addActionListener( new ActionListener()
    {
        public void actionPerformed(ActionEvent t)
        {
            textAreaPath = text.getText();
            p1 = Paths.get(textAreaPath);
        }
    });
//Browse Button
    buttonB = new JButton(" Browse ");
    c.fill = GridBagConstraints.BOTH;
    c.gridx = 3;
    c.gridwidth = 1;
    c.gridy = 2;
    pane.add(buttonB, c);
    buttonB.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent b)
        {
            JFileChooser fc = new JFileChooser();
            FileNameExtensionFilter filter = new FileNameExtensionFilter
                    ("Directories","Directories");
            fc.setCurrentDirectory(new java.io.File("home.desktop"));
            fc.setAcceptAllFileFilterUsed(false);
            fc.setFileFilter(filter);
            fc.setDialogTitle(DIRECTORY);
            fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            int returnVal = fc.showOpenDialog(text);
            if (returnVal == JFileChooser.APPROVE_OPTION)
            {
            text.setText(fc.getSelectedFile().getAbsolutePath());
            }
            ;
        }
    });

//Blank Label
    label = new JLabel ("  ");
    c.fill = GridBagConstraints.BOTH;
    c.ipady = 10;
    c.gridx = 0;
    c.gridwidth = 3;
    c.gridy = 3;
    pane.add(label, c);

//Continue Button
    cButton = new JButton(" Continue ");
    c.fill = GridBagConstraints.BOTH;
    c.ipady = 0;
    c.gridwidth = 1;
    c.gridx = 3;
    c.gridy = 4;
    pane.add(cButton, c);

//Help Button
    buttonH = new JButton (" Help ");
    c.fill = GridBagConstraints.BOTH;
    c.gridx = 0;
    c.gridy = 4;
    pane.add(buttonH, c);
    c.weighty = 3.0;
    c.anchor = GridBagConstraints.PAGE_END;
    buttonH.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent h) 
        {
            JFrame frameH = new JFrame(" Help ");
            JLabel labelH;
            frameH.setResizable(false);
            frameH.setSize(300, 150);
            labelH = new JLabel("<html> In The 'Folder Path' Text Area,"
                    +" Input The Location Where You Would Like To Create"
                    +" The New Folder. <br><br> Then Choose The File Type"
                    +" That You Would Like To Have Sorted Into The Folder."
                    +"<html> ");

            frameH.getContentPane().add(labelH);
            frameH.setVisible(true);
        }
    });  //Ends Action Listener
//Label Page Break
    label = new JLabel (" ______________________________________________"
            +"_____________________________ ");
    c.fill = GridBagConstraints.BOTH;
    c.gridx = 0;
    c.gridwidth = 5;
    c.gridy = 5;
    pane.add(label, c);
//Blank Label
    label = new JLabel ("  ");
    c.fill = GridBagConstraints.BOTH;
    c.gridx = 0;
    c.gridwidth = 5;
    c.gridy = 6;
    pane.add(label, c);
//Label Check Box Instructions
    label = new JLabel ("<html> Please Select The File Type That You Would"
            +" Like To Add To The Folder.<html> ");
    c.fill = GridBagConstraints.BOTH;
    c.gridx = 0;
    c.gridwidth = 5;
    c.gridy = 7;
    pane.add(label, c);
//Check Box (Pictures);
    checkboxP = new JCheckBox(" Pictures ");
    c.fill = GridBagConstraints.BOTH;
    c.gridx = 0;
    c.gridwidth = 1;
    c.gridy = 8;
    pane.add(checkboxP, c);
    checkboxP.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent p)
        {
            SEARCHER = "pictures";
        }
    });
//Check Box (Documents)
    checkboxD = new JCheckBox(" Documents ");
    c.fill = GridBagConstraints.BOTH;
    c.gridx = 2;
    c.gridy = 8;
    pane.add(checkboxD, c);
    checkboxD.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent d)
        {
            SEARCHER = "documents";
        }
    });
//Check Box (Videos)
    checkboxV = new JCheckBox(" Videos ");
    c.fill = GridBagConstraints.BOTH;
    c.gridx = 0;
    c.gridy = 10;
    pane.add(checkboxV, c);
    checkboxV.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent v)
        {
            SEARCHER = "videos";
        }
    });
//Check Box (Music)
    checkboxM = new JCheckBox(" Music ");
    c.fill = GridBagConstraints.BOTH;
    c.gridx = 2;
    c.gridy = 10;
    pane.add(checkboxM, c);
    checkboxM.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent m)
        {
            SEARCHER = "music";
        }
    });

//Searcher If's
    if (SEARCHER == pictures)
    {
        newFolderName = "Pictures";
        extensionType = ".jpg"+".png";
    }
    if (SEARCHER == documents)
    {
        newFolderName = "Documents";
        extensionType = ".txt"+".doc";
    }
    if(SEARCHER == videos)
    {
        newFolderName = "Videos";
        extensionType = ".wmv"+".mp4"+".mov";
    }
    if (SEARCHER == music)
    {
        newFolderName = "Music";
        extensionType = ".mp3";
    }

//Continue Button Action Listener
    cButton.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent contd)
        {
            createDirectory(p1);
        }

        private void createDirectory(Path p1) 
        {

        }

    });

}




//Creating The GUI
//-----------------------------------------------------------------------------
private static void createAndShowFrame()
{
    JFrame frame = new JFrame(" File Organizer ");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    addComponentsToPane(frame.getContentPane());

    frame.pack();
    frame.setVisible(true);
}

//Main Method Header
public static void main(String[] args)
{
    try {
        UIManager.setLookAndFeel
        (UIManager.getCrossPlatformLookAndFeelClassName());
    } catch (ClassNotFoundException | InstantiationException
            | IllegalAccessException | UnsupportedLookAndFeelException e) 
    {
        e.printStackTrace();
    }
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
    public void run()
    {
        createAndShowFrame();
    }
});

}
}

      

+3


source to share


1 answer


The only thing you need:

    File file = new File(text.getText());
    if(!file.exists()) file.mkdir();

      



where text.getText () refers to the JTextField, but you can use the Path object if you want.

0


source







All Articles