我是java的初学者,请告诉我以下代码中的问题是什么。不删除目录或文件。我是删除目录的makin GUI应用程序。
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 :(得分:0)
本声明
File del = new File("text");
只创建File
的引用,该引用不是JFileChooser
中选择的引用。而是使用所选File
currentFile = fc.getSelectedFile();
并使用它来删除。在尝试删除
之前,您需要检查变量是否已分配if (currentFile != null) {
delete(currentFile);
}
答案 1 :(得分:0)
试试这个: 改变这一行:File del = new File(“text”); to:File del = new File(text);
答案 2 :(得分:0)
您需要进行两项更改:
删除以下文字中的双引号:
File del = new File("text"); -> File del = new File(text);
在actionPerformed(ActionEvent)方法中将 tf.setText(s1)更改为 tf.setText(f1.getAbsolutePath())。
< / LI> 醇>答案 3 :(得分: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();
}
}