这次作业要求以图形用户界面输出文件列表,老师已经讲解了大部分,我只做了很小的添加和改进。还是不足很多吧。
package proj2; import java.awt.BorderLayout; import java.awt.Color; import java.awt.ScrollPane; import java.io.File; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.ListSelectionModel; public class FileUtils { /** * 列出指定目录下的所有文件和子目录的名称 * @throws IllegalAccessException * */ public static void listDirectory(File dir) throws IllegalAccessException{ //判断File对象dir是否存在,使用File类的exists()方法 if(!dir.exists()){ //如不存在,抛出异常 throw new IllegalAccessException("目录" + dir +"不存在"); } //判断dir是否是目录,使用File类的isDirectory()方法 if(!dir.isDirectory()){ //如果dir不是目录,抛出异常 throw new IllegalArgumentException(dir + "不是目录"); } //获得指定目录dir下的文件及子目录并输出(1.list();2.listFiles()) //使用list()方法实现 String[] fileName = dir.list(); for(String s :fileName){ System.out.println(dir + "\"+ s); } System.out.println(); //使用listFiles()方法实现只列出目录下的所有文件名称 File[] files = dir.listFiles(); for(File file:files){ //如果是文件,则输出 if(file.isFile()){ System.out.println(file); } } JFrame a =new JFrame("文件目录"); a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); a.setLayout(new BorderLayout()); JLabel northLabel = new JLabel("files list"); a.add(northLabel,BorderLayout.NORTH); JList list = new JList(files); list.setForeground(new Color(140,180,220)); list.setBackground(Color.blue); list.setSelectionBackground(new Color(100,80,150)); list.setSelectionForeground(new Color(140,180,220)); JScrollPane sp = new JScrollPane(list); // a.add(sp,BorderLayout.CENTER); a.setBounds(400,200,400,200); a.setVisible(true); } public static void main(String[] args) { // TODO Auto-generated method stub try { FileUtils.listDirectory(new File("D:\")); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }