用Java打造“网页管家”
编程爱好者
相信大多数上网的朋友都跟我一样,在浏览网页时发现自己比较感兴趣的东西,会迫不及待地选择IE浏览器的“文件→另存为”菜单将网页保存下来。久而久之,保存的东西多了,查找和阅读都不方便。此时我们就需要一款能将文件夹下所保存的网页文件都罗列出来并生成一个索引的软件来给我们打开方便之门,“网页管家”由此而生。下面通过巧妙的Java编程来实现这一功能。
开发工具:Gel,an IDE for Java;
开发环境:Windows XP+jdk1.4.2;
一、软件实现的功能
选择网页文件所存放的目录,然后选择保存路径,最后填上所要生成的文件名就可以创建一个包含指定目录下网页文件名的HTML文件,我们在查找某篇保存的文章时,只须打开刚刚创建的网页进行查找、阅览就可以了。我们用Word简单设计软件的界面如图1。

二、实现原理
在开始前,确保你的电脑里已经安装了jdk,并设置好相应的环境变量。为了开发的方便,请安装一款Java的IDE工具;如果手头没有,用Windows自带的记事本也可;为了软件的美观,可以准备一些漂亮的图标等;实现原理如下:
●读取目标目录下的文件,并将后缀为.htm和.html的文件取出;
方法:利用Java.io.File类中的list(FilenameFileter filter)方法得到所取文件名的字符串数组。
●将取出的文件名写入需要创建的HTML文件中,并加上超级链接;
方法:使用Java.io.PrintWriter类中的println(String s)方法将上面得到的字符串数组写入所要创建的文件中。
三、核心代码
1. 界面的布局
在Java中GUI的开发比其他语言的界面开发都难,不过现在已经有了那些可视化的IDE工具去帮助你完成。如Jbuilder、eclipce里的VE可视化插件等等。由于“网页管家”的界面简单,完全可以自行编码,方法如下:
●不使用面板的布局管理器;
mainPane.setLayout(null);//mainPane为JPanel
●设置各个组件的位置;
directory_lb.setBounds(105,65,60,20);//“目标路径”标签的位置及大小
其他的组件请自己设置其位置及大小。
●使用Container类中的add(Component comp)方法,对各设置好位置及大小的组件进行添加;
mainPane.add(directory_lb);//对“目标路径”标签的添加
剩余的组件请自行添加。
●最后将mainPane添加到框架容器中
getContentPane().add(mainPane);
2. 给按钮添加监听事件代码
●当点击“目标路径”所对的“浏览”按钮时弹出文件选择对话框:
JFileChooser directory_chooser=new JFileChooser();
directory_chooser.showOpenDialog(null);
使“目标路径”所对应文本输入框显示所选目录的路径:
directory_tf.setText(directory_text);
●当点击“关闭”按钮时:
System.exit(0);//退出程序
●“创建”按钮的事件监听,对所有可能发生的情况进行判断:
1.当textfield有一个为空的话,给予提示 :将信息填写完整。
2.检查目标路径,无法读取设备,给予错误提示:无法读取设备。
3.如目标路径无“html”及“htm”文件,给予提示:不包含文件。
4.检查保存路径,无法读取设备,给予提示:保存路径错误。
5.检查文件名,如果在保存目录下已包含同名文件,给予提示:已存在文件。
当所有检查无误时,生成HTML文件。
3. 对文件的过滤
因为我们所需要的是.html及.htm文件,所以要对目标路径下的文件进行过滤操作。
File directory_file=new File(directory_tf.getText());
String[] list=directory_file.list(new FilenameFilter()
{ public boolean accept(File dir, String name)
{ String sname=name.toLowerCase();//可以对目标路径下的文件不区分大小写
/*这里只是检索我们所需要的.html及.htm的格式,如果所需为其他格式的文件时,可按此方法修改*/
int x=sname.indexOf(".htm");
int y=sname.indexOf(".html");
boolean xy=((y!=-1)||(x!=-1));
return xy; }
});
4. HTML文件的创建
这是我们最后的任务,创建我们需要的HTML文件,可以分两步。
●创建HTML文件
File path_file=new File(path_tf.getText()+"/"+name_tf.getText()+".html");
path_file.createNewFile();
●将数据写入创建的文件中
我们创建的是HTML格式的文件,只要按照HTML语言的格式对创建的文件进行写操作便可。
PrintWriter out=new PrintWriter(new FileWriter(path_file));
/*按照html文件的格式进行写操作*/
out.println("<html>");
out.println("<titl0>***网页管家,轻松好帮手***</title>");
out.println("<body>");
out.println(“<h1>本页由辛涛的网页管家自动生成</h1>");
out.println("<p>");
for(int i=0;i<list.length;i++)
{ File href=new File(directory_text+"/"+list[i]);
out.println("<br>");
out.print("<a href=");
out.print("\"");
out.print(href.getPath());
out.print("\" ");
out.print("target=");
out.print("\"");
out.print("_blank");
out.print("\">");
out.print(list[i]); }
out.println("</body>");
out.println("</html>");
out.close();//关闭数据流,收回系统资源
5. 软件的美化
一个软件功能固然重要,但人机交互的界面也需要友好、美观,你可以按照源代码中的方法加以美化,真正的做出属于你的“网页管家”。
四、程序的编译和运行
我们创建的类为继承JFrame类的CreateGui。
1.运行“cmd→程序的存放目录→Javac CreateGui.Java”,如图2。

2.编译无误后,用“Java”命令运行程序。
程序的运行界面如图3。
