在Java中选择文件夹目标?

Sam*_*Sam 37 java directory

我是Java的新手.我正在尝试动态选择文件位置以保存项目的结果(在项目的最开始时启动).我使用了一些FileDialog示例,但是每个示例都允许我选择一个文件而不是文件夹.

任何人都可以帮我一个例子(或)链接到同一个?

npi*_*nti 67

您可以尝试这样的事情(如下所示:使用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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请记住,从对话框返回后,方法getSelectedDirectory()返回所选目录所在的目录。getSelectedFile()返回实际选择的目录\ (2认同)

小智 27

Oracles Java教程文件选择器:http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html

注意getSelectedFile()返回所选文件夹,尽管名称. getCurrentDirectory()返回所选文件夹的目录.

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());
    }      
}
Run Code Online (Sandbox Code Playgroud)

  • 为描述 getCurrentDirectory getSelectedFile 之间的差异点赞。 (3认同)

Nag*_*eni 13

尝试这样的事情

JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new java.io.File("."));
chooser.setDialogTitle("select folder");
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setAcceptAllFileFilterUsed(false);
Run Code Online (Sandbox Code Playgroud)

  • @cssGEEK可能为时已晚,无法回答,但它使对话框从当前目录开始.在Unix(至少)中,每个目录都有一个名为`.`的文件夹和一个名为`..`的文件夹.第一个是对同一目录的引用,后者是父目录.在Java中,你给`File`的构造函数的String是一个相对路径,如果它不是以`/`(Unix)或`X:\`(Windows)开头的,所以如果你给它".",它是一个相对于程序当前目录所在的文件夹.这将使选择器指向程序运行的当前目录. (2认同)