下面的示例可以实现只要你输入路径,就可以把路径下面的目录和文件列出来,如果路径非法的话,都会有提示:
package com.xywei.awt;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
public class ListDir {
private Frame fr=new Frame();
private Button bt=new Button();
private TextField txf=new TextField();
private TextArea txa=new TextArea(25,82);
private Button txfCls=new Button("清空路径");
private Button txaCls=new Button("清空内容");
//设计如果目录不存在时候,弹出来的对话框
private Dialog dial=new Dialog(fr, "输入错误", true);
private Label lb=new Label("输入内容出错!!");
private Button dibt=new Button("确定");
public void listDir() {
fr.setTitle("列出目录下面的内容");
fr.setLocation(400, 100);
fr.setResizable(false);
fr.setSize(700, 500);
fr.setVisible(true);
fr.setLayout(new FlowLayout());
txf.setColumns(77);
fr.add(txf);
bt.setLabel("转到");
fr.add(bt);
fr.add(txfCls);
fr.add(txa);
fr.add(txaCls);
//设计对话框布局
dial.setLayout(new FlowLayout());
dial.setBounds(550, 300, 300, 100);
//把对话框中的按钮,标签假如到对话框中
dial.add(lb);
dial.add(dibt);
Event();
}
public void Event(){
fr.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.out.println("===关闭窗口===");
System.exit(0);
}
});
dial.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dial.setVisible(false);
}
});
dibt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
dial.setVisible(false);
}
});
bt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
showContent();
}
});
txfCls.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
txf.setText("");
System.out.println("===路径已经清空!===");
}
});
txaCls.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
txa.setText(null);
System.out.println("====内容已经清空!====");
}
});
txf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int code=KeyEvent.VK_ENTER;
if(code==e.getKeyCode()){
showContent();
}
}
});
}
public void showContent(){
//获得文本框中输入的目录内容
String path=txf.getText();
File pathName=new File(path);
//判断是否是目录,目录是否存在,如果存在
if(pathName.isDirectory() && pathName.exists()){
//先把原来的内容清空
txa.setText("");
//获得目录中的内容:把内容放入字符串数组中
String[] content=pathName.list();
//从数组中取出数据,显示在文本区域中
for(String contents:content){
txa.append(contents+"\n");
System.out.println(contents);
}
}else {
String showMess="输入的路径\t"+path+"\t没有找到!\n\n";
//把输入的路径的信息显示在label上
lb.setText(showMess);
System.out.println("目录不存在");
dial.setVisible(true);
}
}
/**
* 输入一个路径,把下面的内容都列出来,首先判断是不是目录,输入的是否合法
*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ListDir ld = new ListDir();
ld.listDir();
}
}