1. 程式人生 > >java實現目錄選擇方法 JFileChooser

java實現目錄選擇方法 JFileChooser

方法一,使用JFileChooser控制元件:

示例:選檔案

JFileChooser chooser = new JFileChooser();

chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);//設定只能選擇目錄
int returnVal = chooser.showOpenDialog(parent);
if(returnVal == JFileChooser.APPROVE_OPTION) {
 selectPath =chooser.getSelectedFile().getPath() ;

 System.out.println ( "你選擇的目錄是:" + selectPath );
 chooser.hide();
}

  1. 多選
  2. 在基本用法中,設定
  3. c.setMultiSelectionEnabled(true);
  4. 即可實現檔案的多選。
  5. 讀取選擇的檔案時需使用
  6. File[] files = c.getSelectedFiles();
  7. 選擇目錄
  8. 利用這個開啟對話方塊,不僅可以選擇檔案,還可以選擇目錄。
  9. 其實,對話方塊有一個FileSelectionMode屬性,其預設值為“JFileChooser.FILES_ONLY”,只需要將其修改為“JFileChooser.DIRECTORIES_ONLY”即可。
  10. JFileChooser c = new JFileChooser();
  11. c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
  12. c.setDialogTitle("Select path to save");
  13. int result = c.showOpenDialog(PrintDatetime.this);
  14. if (result == JFileChooser.APPROVE_OPTION) {
  15. String path = c.getSelectedFile().getAbsolutePath());
  16. }

j2me 中使用

方法二,使用DirectoryDialog控制元件:

示例:

Display display = new Display ();
Shell shell = new Shell (display);

 DirectoryDialog dialog = new DirectoryDialog (shell);
 selectPath = dialog.open() ;
 System.out.println ( "你選擇的目錄是:" + selectPath );
 while (!shell.isDisposed()) {
      if (!display.readAndDispatch ()) display.sleep ();     

 }
 display.dispose ();

  1. package src10;  
  2. import java.awt.BorderLayout;  
  3. import java.awt.Container;  
  4. import java.awt.Dimension;  
  5. import java.awt.event.ActionEvent;  
  6. import java.awt.event.ActionListener;  
  7. import java.awt.event.WindowAdapter;  
  8. import java.awt.event.WindowEvent;  
  9. import java.io.File;  
  10. import java.io.FileInputStream;  
  11. import java.io.FileNotFoundException;  
  12. import java.io.FileOutputStream;  
  13. import java.io.IOException;  
  14. import javax.swing.JButton;  
  15. import javax.swing.JFileChooser;  
  16. import javax.swing.JFrame;  
  17. import javax.swing.JLabel;  
  18. import javax.swing.JPanel;  
  19. import javax.swing.JScrollPane;  
  20. import javax.swing.JTextArea;  
  21. publicclass s01 implements ActionListener {  
  22.     JFrame jf = null;  
  23.     JLabel jl = null;  
  24.     JTextArea jta = null;  
  25.     JFileChooser jfc = null;  
  26.     private Object Finally;  
  27.     public s01()  {  
  28.         jf = new JFrame("FileChooser Example");  
  29.         Container jcp = jf.getContentPane();  
  30.         jta = new JTextArea();  
  31.         JScrollPane jsp = new JScrollPane(jta);  
  32.         jsp.setPreferredSize(new Dimension(350300));  
  33.         JPanel jp = new JPanel();  
  34.         JButton jbt1 = new JButton("新建檔案");  
  35.         JButton jbt2 = new JButton("儲存檔案");  
  36.         jbt1.addActionListener(this);  
  37.         jbt2.addActionListener(this);  
  38.         jp.add(jbt1);  
  39.         jp.add(jbt2);  
  40.         jl = new JLabel("", JLabel.CENTER);  
  41.         jfc = new JFileChooser("D:\\");  
  42.         jcp.add(jl, BorderLayout.NORTH);  
  43.         jcp.add(jsp, BorderLayout.CENTER);  
  44.         jcp.add(jp, BorderLayout.SOUTH);  
  45.         jf.pack();  
  46.         jf.setVisible(true);  
  47.         jf.addWindowListener(new WindowAdapter() {  
  48.             publicvoid windowClosing(WindowEvent e) {  
  49.                 System.exit(0);  
  50.             }  
  51.         });  
  52.     }  
  53.     publicstaticvoid main(String[] args) {  
  54.         new s01();  
  55.     }  
  56.     publicvoid actionPerformed(ActionEvent e) {  
  57.         File file = null;  
  58.         int result;  
  59.         FileInputStream fin = null;  
  60.         FileOutputStream fout = null;  
  61.         if(e.getActionCommand().equals("新建檔案")) {  
  62.             jfc.setApproveButtonText("確定");  
  63.             jfc.setDialogTitle("開啟檔案");  
  64.             result = jfc.showOpenDialog(jf);  
  65.             jta.setText("");  
  66.             if(result==jfc.APPROVE_OPTION) {  
  67.                 file = jfc.getSelectedFile();  
  68.                 jl.setText("您選擇開啟的檔名稱為: " + file.getName());  
  69.             } elseif(result==jfc.CANCEL_OPTION) {  
  70.                 jl.setText("您沒有選擇任何檔案");  
  71.             }  
  72.         }  
  73.         if(file!=null) {  
  74.             try {  
  75.                 fin = new FileInputStream(file);  
  76.             } catch (FileNotFoundException e1) {  
  77.                 jl.setText("File not found");  
  78.                 return;  
  79.             }  
  80.         }  
  81.         int readbyte;  
  82.         try {  
  83.             while((readbyte=fin.read())!=-1) {  
  84.                 jta.append(String.valueOf((char)readbyte));  
  85.             }  
  86.         } catch (IOException e2) {  
  87.             jl.setText("讀取檔案錯誤");  
  88.         }  
  89.         finally {  
  90.             try {  
  91.                 if(fin!=null) {   
  92.                     fin.close();  
  93.                 }  
  94.             } catch (IOException e3) {}  
  95.         }  
  96.         if(e.getActionCommand().equals("儲存檔案")) {  
  97.             result = jfc.showSaveDialog(jf);  
  98.             file = null;  
  99.             String fileName;  
  100.             if(result==jfc.APPROVE_OPTION) {  
  101.                 file = jfc.getSelectedFile();  
  102.                 jl.setText("您選擇儲存的檔名稱為: " + file.getName());  
  103.             } elseif(result==jfc.CANCEL_OPTION) {  
  104.                 jl.setText("您沒有選擇任何檔案");  
  105.             }  
  106.         }  
  107.         if(file!=null) {  
  108.             try {  
  109.                 fout = new FileOutputStream(file);  
  110.             } catch (FileNotFoundException e4) {  
  111.                 jl.setText("File not found");  
  112.                 return;  
  113.             }  
  114.             String content = jta.getText();  
  115.             try {  
  116.                 fout.write(content.getBytes());  
  117.             } catch (IOException e5) {  
  118.                 jl.setText("寫入檔案錯誤");  
  119.             }  
  120.             finally {  
  121.                 if(fout!=null) {  
  122.                     try {  
  123.                         fout.close();  
  124.                     } catch (IOException e6) {}  
  125.                 }  
  126.             }  
  127.         }  
  128.     }  
  129. }