Java实现目录查找与文本阅读
来源:互联网 发布:java获取泛型的类型 编辑:程序博客网 时间:2024/06/10 07:20
1.实现文本阅读
package AllAboutFile;
/**
*
* @author lucifer
*/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class FileViewer extends Frame implements ActionListener{
String directory;
TextArea textarea; //显示文本内容的地方
public FileViewer(){
this(null,null);
}
public FileViewer(String filename){
this(null,filename);
}
public FileViewer(String directory,String filename){
super();
addWindowListener(
new WindowAdapter(){
public void WindowClosing(WindowEvent e){
dispose();
}
}
);
//Create TextArea
textarea = new TextArea("",24,80);
textarea.setFont(new Font("Monospaced",Font.PLAIN,12));
textarea.setEditable( false );
this.add("Center",textarea);
//Create Panel
Panel p = new Panel();
p.setLayout( new FlowLayout(FlowLayout.RIGHT,10,5) );
this.add(p,"South");
//Create Button
Font font = new Font("SansSerif",Font.BOLD,14);
Button OpenFile = new Button("Open File");
Button Close = new Button("Close");
OpenFile.addActionListener(this);
OpenFile.setActionCommand("open");
OpenFile.setFont(font);
Close.addActionListener( this );
Close.setActionCommand( "close" );
Close.setFont( font );
p.add( OpenFile );
p.add( Close );
this.pack();
if(directory == null){
File f;
if((filename != null)&&(f = new File(filename)).isAbsolute()){
directory = f.getParent();
filename = f.getName();
}
else
directory = System.getProperty( "user.dir" );
}
this.directory = directory;
setFile(directory,filename);
}
public void setFile(String directory,String filename){
if((filename == null)||(filename.length() == 0)){
return;
}
File f = new File(directory,filename);
try{
FileReader fr = new FileReader(f);
char buffer[] = new char[4096];
int len;
textarea.setText( "" );
//show text
while((len = fr.read(buffer)) != -1){
String str = new String(buffer,0,len);
textarea.append( str );
}
this.setTitle( "FileViewer:" + filename );
textarea.setCaretPosition( 0 );
fr.close();
}
catch(Exception e){
textarea.setText( e.getMessage() );
}
}
public void actionPerformed(ActionEvent e){
String cmd = e.getActionCommand();
if(cmd.equals( "open" )){
FileDialog fd = new FileDialog(this,"Select File",FileDialog.LOAD);
fd.setDirectory( directory );
fd.show();
directory = fd.getDirectory();
setFile(directory,fd.getFile());
fd.dispose();
}
else if(cmd.equals( "close" )){
this.dispose();
}
}
static public void main(String[] args){
Frame f = new FileViewer((args.length==1)?args[0]:null);
f.addWindowListener(new WindowAdapter(){
public void WindowClosed(WindowEvent e){
System.exit(0);
}
}
);
f.show();
}
}
2.目录显示与操作
package AllAboutFile;
/**
*
* @author lucifer
*/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.text.DateFormat;
public class FileLister extends Frame implements ActionListener,ItemListener{
private List list;
private TextField details;
private Panel buttons;
private Button up,close;
private File currentDir;
private FilenameFilter filter;
private String[] files;
private DateFormat dateFormatter =
DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);
public FileLister(String directory,FilenameFilter filter){
super("File Lister");
this.filter = filter;
addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e){
dispose();
}
});
list = new List(12,false);
list.setFont( new Font("MonoSpaced",Font.PLAIN,14) );
list.addActionListener( this );
list.addItemListener( this );
details = new TextField();
details.setFont( new Font("MonoSpaced",Font.PLAIN,12) );
details.setEditable(false);
buttons = new Panel();
buttons.setLayout(new FlowLayout(FlowLayout.RIGHT,15,5));
buttons.setFont( new Font("SansSerif",Font.BOLD,14) );
up = new Button("Upper Directory");
close = new Button("Close");
up.addActionListener( this );
close.addActionListener( this );
buttons.add( up );
buttons.add( close );
this.add( list, "Center" );
this.add( details, "North" );
this.add( buttons , "South" );
this.setSize( 500 , 350);
listDirectory(directory);
}
public void listDirectory(String directory){
File dir = new File(directory);
if(!dir.isDirectory())
throw new IllegalArgumentException("FileListener : no such firectory");
files = dir.list( filter );
java.util.Arrays.sort( files );
list.removeAll();
list.add( "[Up to Parent Directory]" );
for(int i = 0;i < files.length; i++){
list.add( files[i] );
}
this.setTitle( directory );
details.setText( directory );
currentDir = dir;
}
public void actionPerformed(ActionEvent ae){
if(ae.getSource() == close)
this.dispose();
else if(ae.getSource() == up)
up();
else if(ae.getSource() == list){
int i = list.getSelectedIndex();
if( i == 0 )
up();
else{
String name = files[i-1];
File f = new File(currentDir,name);
String fullname = f.getAbsolutePath();
if(f.isDirectory())
listDirectory(fullname);
else new FileViewer(fullname).show();
}
}
}
public void itemStateChanged(ItemEvent ie){
int i = list.getSelectedIndex() - 1;
if(i < 0)
return;
String filename = files[i];
File f = new File(currentDir,filename);
if(!f.exists())
throw new IllegalArgumentException("FileLister : no such file or directory");
String info = null;
if(f.isDirectory())
info += File.separator;
info += " " + f.length() + " bytes ";
info += dateFormatter.format( new java.util.Date(f.lastModified()) );
if(f.canRead())
info += " Read";
if(f.canWrite())
info += " Write";
details.setText(info);
}
protected void up(){
String parent = currentDir.getParent();
if(parent == null)
return;
listDirectory(parent);
}
public static void usage(){
System.out.println("Usage : java FileLister [directory_name] " +
"[-e file_extension]");
System.exit( 0 );
}
public static void main(String[] args){
FileLister f;
FilenameFilter filter = null;
String directory = null;
for(int i = 0;i < args.length; i++){
if(args[i].equals("-e")){
if(++i > args.length)
usage();
final String suffix = args[i];
filter = new FilenameFilter(){
public boolean accept(File dir,String name){
if(name.endsWith( suffix ))
return true;
else
return (new File(dir,name)).isDirectory();
}
};
}
else{
if(directory != null)
usage();
else directory = args[i];
}
}
if(directory == null)
directory = System.getProperty( "user.dir" );
f = new FileLister(directory,filter);
f.addWindowListener(new WindowAdapter(){
@Override
public void windowClosed(WindowEvent e){
System.exit(0);
}
});
f.show();
}
}
- Java实现目录查找与文本阅读
- 遍历目录查找文本
- redhat实现目录下特定文本类型内关键字查找及vim模式下关键字查找
- Java实现从文本中查找最长的回文字符串
- java实现查找文本内容替换功能示例
- 文本阅读的功能实现
- java实现在指定目录中查找字符串
- java查找匹配的文本
- 线性查找与二分查找(java实现)
- 阅读:漫画与文本的互相促进
- 阅读:漫画与文本的互相促进
- 《Redis设计与实现 黄建宏 著》阅读笔记目录(持续更新)
- 七、Qt Creator实现文本查找
- 七、Qt Creator实现文本查找
- C#RichTextBox 文本查找与替换
- XCode中文本查找与文本替换
- java网络Socket编程实现文本复制与图片复制
- 文本替换java实现
- 【转】在OpenCV中自适应确定canny算法的分割阈值
- 弹性计算云Eucalyptus代码(start with A)
- 计算年资的SQL语句
- 插件的编写与应用
- 给服务器端DropDownList控件添加客户端onchange事件
- Java实现目录查找与文本阅读
- 简历的海洋
- PRO c在vs2005下的配置
- 去除ie6/7 and ff下超链接虚线框的解决办法
- vs2005 调试命令摘要举例
- 我的第一个windows程序
- 判断单链表是否存在环,判断两个链表是否相交问题详解(转载)
- 实验五 SQL查询(排序、集函数和分组子句的应用)
- 企业持续集成成熟度模型简介之一——构建