|
//源码是这样的:
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import java.io.*;
import java.lang.*;
public class URLRead extends JFrame
{
public static void main(String []args){ new URLRead();}
JPanel jp;
Label lb=new Label();
TextField tf=new TextField();
Button btn=new Button();
TextArea ta=new TextArea();
public URLRead()
{
jp=(JPanel)this.getContentPane();
jp.setLayout(null);
this.setSize(new Dimension(800,600));
this.setResizable(false);
this.setTitle("读取网络资源");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lb.setText("URL name:");
lb.setBounds(new Rectangle(40,6,65,22));
tf.setText("http://www.haokan123.com");
tf.setBounds(new Rectangle(140,3,246,24));
btn.setLabel("Read");
btn.setBounds(new Rectangle(323,4,65,24));
btn.addMouseListener(new myMouseAdapter());
ta.setText("输入网址,读取网上的源文件");
ta.setBounds(new Rectangle(30,42,750,500));
jp.add(btn,null);
jp.add(lb,null);
jp.add(tf,null);
jp.add(ta,null);
this.setVisible(true);
}
class myMouseAdapter extends MouseAdapter
{
public void mouseClicked(MouseEvent e)
{
String str1="";ta.setText("正在读取网络数据...");
try
{
byte[]buf=new byte[1024];
URL url=new URL(tf.getText());
File tmp=File.createTempFile("url",".tmp");
tmp.deleteOnExit();
BufferedInputStream urlReader=new BufferedInputStream(url.openStream());
BufferedOutputStream urlWriter=new BufferedOutputStream(new FileOutputStream(tmp));
while((urlReader.read(buf))!=-1){urlWriter.write(buf);}
urlWriter.flush();
urlReader.close();
urlWriter.close();
ta.setText("");
BufferedReader temp=new BufferedReader(new FileReader(tmp));
while((str1=temp.readLine())!=null){str1+="\n ";ta.append(str1);}
}catch(Exception ex){JOptionPane.showMessageDialog(null,"Something wrong!");}
}
}
}
//问题是:读取网页源码的结果,会有多余的文字,如读"http://www.haokan123.com",结果是......</html>"javascript" SRC="http://is.qq.com/js/addportal.js"></SCRIPT>
<SCRIPT>AddPortal......
我知道问题出在"BufferedInputStream urlReader=new BufferedInputStream(url.openStream());
BufferedOutputStream urlWriter=new BufferedOutputStream(new FileOutputStream(tmp));
while((urlReader.read(buf))!=-1){urlWriter.write(buf);}"
我试过用BufferedReader,结果完全正确.
但我不明白这个程序为什么会这样?
请高手解答 |
|