package iotest;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class ListFileDemo
{
public static void main(String[] args)
{
ListFileDemoFrame frame = new ListFileDemoFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class ListFileDemoFrame extends JFrame
{
private JTextArea area;
public ListFileDemoFrame()
{
setTitle("ListFileDemoFrame");
setSize(400,380);
Container con = getContentPane();
ListFileDemoPanel panel = new ListFileDemoPanel(ListFileDemoFrame.this);
con.add(panel,"North");
area = new JTextArea();
JScrollPane sp = new JScrollPane(area);
con.add(sp);
}
public JTextArea getArea()
{
return area;
}
}
class ListFileDemoPanel extends JPanel
{
private File f;
private ListFileDemoFrame frame;
public ListFileDemoPanel(ListFileDemoFrame fr)
{
frame = fr;
JButton browse = new JButton("浏览");
browse.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("D://"));
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int result = chooser.showOpenDialog(null);
if(result == JFileChooser.APPROVE_OPTION)
{
f = chooser.getSelectedFile();
}
}
});
JButton print = new JButton("打印");
print.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
loopSearch(f);
}
});
JButton save = new JButton("保存");
save.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("D://"));
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
chooser.setFileFilter(new javax.swing.filechooser.FileFilter()
{
public boolean accept(File f)
{
return f.getName().toLowerCase().endsWith(".txt") || f.isDirectory();
}
public String getDescription()
{
return "文本文件";
}
});
int result = chooser.showSaveDialog(null);
if(result == JFileChooser.APPROVE_OPTION)
{
try
{
File savefile = chooser.getSelectedFile();
RandomAccessFile raf = new RandomAccessFile(savefile.getPath(),"rw");
raf.write(frame.getArea().getText().getBytes());
}
catch(IOException ee)
{
}
}
}
});
add(browse);
add(print);
add(save);
}
public void loopSearch(File file) //核心递归算法
{
File[] ff = file.listFiles();
for(int i = 0;i < ff.length;i++)
{
if(ff[i].isDirectory())
{
loopSearch(ff[i]);
}
else
{
frame.getArea().append(ff[i].getPath()+"/r/n");
System.out.println(ff[i].getPath());
}
}
}
}