2013-09-26 50 views
0

我是初學java,請告訴我在下面的代碼中有什麼問題..不刪除目錄或文件。我是刪除目錄的makin GUI應用程序。如何刪除java中使用JFileChooser的目錄

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

class DeleteFile extends JFrame implements ActionListener { 

    JFileChooser fc; 
    JButton b, btndel; 
    JLabel l; 
    JTextField tf; 

    DeleteFile() { 
     super("Delete Directory"); 
     fc = new JFileChooser("G:\\Java"); 
     l = new JLabel("File"); 
     l.setBounds(25, 22, 35, 35); 
     add(l); 
     tf = new JTextField(); 
     tf.setBounds(60, 25, 170, 25); 
     add(tf); 
     b = new JButton("Browse"); 
     b.setBounds(250, 25, 80, 25); 
     add(b); 
     b.addActionListener(this); 
     btndel = new JButton("Delete"); 
     btndel.setBounds(250, 100, 80, 25); 
     add(btndel); 
     btndel.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       if (e.getSource() == btndel) { 
        String text = tf.getText(); 
        System.out.println(text); 
        File del = new File("text"); 
        delete(del); 
       } 
      } 
     }); 
     setLayout(null); 
     setSize(400, 200); 
     setVisible(true); 
    } 

    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == b) { 
      int x = fc.showOpenDialog(null); 
      if (x == JFileChooser.APPROVE_OPTION) { 
       File f1 = fc.getSelectedFile(); 
       String s1 = fc.getName(f1); 
       tf.setText(s1); 
       File f2 = fc.getCurrentDirectory(); 
       String s2 = fc.getName(f2); 
      } 
     } 
    } 

    public void delete(File file) { 
     if (file.isDirectory()) { 
      File[] files = file.listFiles(); 
      for (int i = 0; i < files.length; i++) { 
       delete(files[i]); 
      } 
      file.delete(); 
      System.out.println("yes"); 
     } else { 
      file.delete(); 
      System.out.println("no"); 
     } 
    } 

    public static void main(String... s) { 
     new DeleteFile(); 
    } 
} 

回答

0

你需要做出兩個改變:

  1. 在以下刪除文本週圍的雙引號:

    ​​
  2. 變化tf.setText(S1)tf.setText (f1.getAbsolutePath()) in actionPerformed(ActionEvent)方法。

+0

非常感謝:) – AR7

0

本聲明

File del = new File("text"); 

只是創建一個File這是不是在你的JFileChooser所選擇的參考。而是使用所選的類成員變量引用File

currentFile = fc.getSelectedFile(); 

並用它來刪除。您將要檢查試圖刪除

if (currentFile != null) { 
    delete(currentFile); 
} 
0

嘗試此之前的變量分配: 改變這一行:文件刪除=新的文件(「文本」); 到:File del = new File(text);

0
what you code,make it neat :) 

public class DeleteFile extends JFrame implements ActionListener { 

     private static final String FOLDER = "E:\\Java"; 
     JFileChooser myFileChooser; 
     JButton myButtonBrowse, myButtonDelete; 
     JLabel myLabel; 
     JTextField myTextField; 

     DeleteFile() { 
      super("Delete Directory"); 
      myFileChooser = new JFileChooser(FOLDER); 
      myLabel = new JLabel("File"); 
      myLabel.setBounds(25, 22, 35, 35); 
      add(myLabel); 
      myTextField = new JTextField(FOLDER); 
      myTextField.setBounds(60, 25, 170, 25); 
      add(myTextField); 
      myButtonBrowse = new JButton("Browse"); 
      myButtonBrowse.setBounds(250, 25, 80, 25); 
      add(myButtonBrowse); 
      myButtonBrowse.addActionListener(this); 
      myButtonDelete = new JButton("Delete"); 
      myButtonDelete.setBounds(250, 100, 80, 25); 
      add(myButtonDelete); 
      myButtonDelete.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 
        if (e.getSource() == myButtonDelete) { 
         String text = myTextField.getText(); 
         File deleting = new File(text); 
         if (deleting.isDirectory()) { 
          System.out.println(text+" gonna delete"); 
          delete(deleting); 
         }else{ 
          System.out.println("sorry, "+text+" doesnt exists"); 
         } 
        } 
       } 
      }); 
      setLayout(null); 
      setSize(400, 200); 
      setVisible(true); 
      setDefaultCloseOperation(EXIT_ON_CLOSE); 
     } 

     public void actionPerformed(ActionEvent e) { 
      if (e.getSource() == myButtonBrowse) { 
       int x = myFileChooser.showOpenDialog(null); 
       if (x == JFileChooser.APPROVE_OPTION) { 
        File f1 = myFileChooser.getSelectedFile(); 
        // f1.delete(); 

        String s1 = myFileChooser.getName(f1); 
        myTextField.setText(s1); 
        File f2 = myFileChooser.getCurrentDirectory(); 
        String s2 = myFileChooser.getName(f2); 
       } 
      } 
     } 

     public void delete(File file) { 
      if (file.isDirectory()) { 
       File[] files = file.listFiles(); 
       for (int i = 0; i < files.length; i++) { 
        delete(files[i]); 
       } 
       file.delete(); 
       System.out.println("folder deleted :" + file.getName()); 
      } else { 
       file.delete(); 
       System.out.println("file deleted:" + file.getName()); 
      } 
     } 

     public static void main(String... s) { 
      new DeleteFile(); 
     } 
    }