RSS
热门关键字:  java  Ajax  JSP  JSF  Struts
当前位置 : 首页>Java>列表

网页源文件查看器

来源: 作者: 时间:2007-09-29 点击:

FileNameExtensionFilter ff = null;
//如果是可以匹配的,则匹配,否则的话,只能用户输入什么
//就是什么了,即使他不输入后缀名那也没办法了
if (filter instanceof FileNameExtensionFilter) {
ff = (FileNameExtensionFilter) filter;
String[] exts = ff.getExtensions();
boolean match = false;
for (String ext : exts) {
if (f.toString().toLowerCase().endsWith(ext.toLowerCase())) {
match = true;
break;
}
}
//如果没有匹配,则说明输入的时候,没有输入后缀名,我们要人工加上去
if (!match) {
f = new File(f.toString() + "." + exts[0]);
}
}
bw = new BufferedWriter(new FileWriter(f));
bw.write(s);
JOptionPane.showMessageDialog(this, "保存成功!!");
} catch (IOException ex) {
Logger.getLogger(Test4.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if (bw != null) {
bw.close();
}
} catch (IOException ex) {
Logger.getLogger(Test4.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}

//用于取源码的线程
private class Task implements Runnable {

//此任务是否已经取消了
private volatile boolean isCanceled;
private String s;
private int done; //已经完成的字节
private InputStream is; //连上的输入流,如果长时间没有动作,则流也要被强制关闭
private long time; //最新一次读流的时间

public Task(String s) {
this.s = s;
time = System.currentTimeMillis(); //初始化第一次的时间
new Thread() {

public void run() {
while (!isCanceled) {
try {
Thread.sleep(1000);
long now = System.currentTimeMillis();
//如果最后一次读成功字节到现在已经过了30秒钟了,则强行断之
if (now - time > 30000) {
isCanceled = true;
jpb.setIndeterminate(false);
jpb.setVisible(false);
is.close();
}
} catch (Exception ex) {
Logger.getLogger(Test4.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}.start();
}

public void run() {
validate(s);
}

//验证传入的字符串是否合法
private void validate(String s) {
try {
if (s == null || s.equals("")) {
JOptionPane.showMessageDialog(Test4.this, "网址不能为空!!");
input.requestFocus();
return;
} else if (s.startsWith("http://")) {
//什么都不要做
} else {
//如果没有加上http的前缀的话,我们帮他加上
s = "http://" + s;
}
if (isCanceled) {
return;
}
URL url = new URL(s);
viewSource(url);
} catch (MalformedURLException ex) {
Logger.getLogger(Test4.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(Test4.this, "域名解析出错!!");
}
}

//执行查看网页源文件的动作
private void viewSource(URL url) {
try {
jpb.setVisible(true);
jpb.setValue(0);
jpb.setString("");
HttpURLConnection http = (HttpURLConnection) url.openConnection();
//得到网页的内容长度,可能为-1
int length = http.getContentLength();
if (length != -1) {
jpb.setIndeterminate(false);
jpb.setMaximum(length);
jpb.setValue(0);
} else {
jpb.setString("");
jpb.setIndeterminate(true);
}
//中间再检查一下是否取消了本次任务,以免做无谓的功
if (isCanceled) {
return;
}
//得到网页的编码,可能没有指定,如果没有指定,就用默认的系统编码了
String contentType = http.getContentType();
String encoding = null; //将要使用的编码,它将从contentType里面去取
if (contentType != null) {
int index = contentType.indexOf("charset=");
if (index != -1) {
encoding = contentType.substring(index + 8).trim();
}
}
is = http.getInputStream();
//如果得到的长度是-1,则不知道什么时候会读完
//这个时候就可以边读边显示出来
if (length == -1) {

BufferedReader br = new BufferedReader(new InputStreamReader(is));
String temp = null;

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
Google Adsense
相关文章