超シンプルなファイルダウンロード


import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;

//   
public class Exec {
	public static void main(String[] args) {
		//        
		DemoWindow dw = new DemoWindow("      ");

		//                         1/3,                   1/3 
		Toolkit theKit = dw.getToolkit();
		Dimension wndSize = theKit.getScreenSize();
		dw.setBounds(wndSize.width / 3, wndSize.height / 3, wndSize.width / 3,
				wndSize.height / 3);

		//             
		dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		//        
		dw.setVisible(true);
	}
}

//     
class DemoWindow extends JFrame implements ActionListener {
	//       URL    
	JTextField jtf = new JTextField(25);

	//     
	JButton jb = new JButton("  ");

	//             
	JTextArea jta = new JTextArea();

	//          
	int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
	int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
	JScrollPane jsp = new JScrollPane(jta, v, h);

	//     
	JPanel jp = new JPanel();

	//       
	Downloader downloader;

	//     
	public DemoWindow(String title) {
		super(title);

		//     
		jp.setLayout(new FlowLayout(FlowLayout.LEFT));
		jp.add(jtf);
		jp.add(jb);
		add(jp, BorderLayout.NORTH);
		add(jsp, BorderLayout.CENTER);

		//        
		jtf.addActionListener(this);
		jb.addActionListener(this);
	}

	//       
	public void actionPerformed(ActionEvent e) {
		//            
		downloader = new Downloader(jtf.getText(), jta);

		//       
		Thread thread = new Thread(downloader);
		thread.start();
	}
}

//        
class Downloader implements Runnable {
	//      URL
	String urlString;

	//             
	JTextArea jta;

	//     
	public Downloader(String urlString, JTextArea jta) {
		//     
		this.urlString = urlString;
		this.jta = jta;
	}

	//            
	public void run() {
		//          
		StringBuffer info = new StringBuffer();
		try {
			//      URL
			URL url = new URL(urlString);

			//         URL  
			URLConnection urlConn = url.openConnection();

			//            
			info.append("  : " + url.getHost() + "
"); info.append(" : " + url.getDefaultPort() + "
"); info.append(" : " + urlConn.getContentType() + "
"); info.append(" : " + urlConn.getContentLength() + "
"); info.append(" ..."); // jta.setText(info.toString()); // InputStream is = urlConn.getInputStream(); // String localFileName = url.getFile().substring( url.getFile().lastIndexOf("/") + 1); // FileOutputStream fos = new FileOutputStream(localFileName); // int data; while ((data = is.read()) != -1) { fos.write(data); } // is.close(); fos.close(); } catch (Exception e) { System.out.println(e.getMessage()); } jta.append(" !"); } }