有多个网页网址,我需要查看网页是否正常,近来的我发现很蛋疼,我要一个一个地复制网址,放进地址栏里面,这个一旦网址多个,真心蛋疼,一开始不知道怎么入手,参考了http://www.jb51.net/article/42460.htm这篇文章,然后自己重新去看了API。
第一种方法是之前写定时器工具用到的东西。
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler http://www.csdn.net");
用的是windows指令的操作,Runtime执行的方法相当于你在dos窗口执行。但是像这样rundll32 url.dll的指令还真不知道。
第二种方法是使用Java提供的Desktop类。
import java.awt.Desktop; import java.io.File; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; /** * @author ckc * 照着api来 可以用默认浏览器打开uri 默认的邮件打开发送到uri * 默认程序打开 编辑文件 */ public class TestDesktop { public static void main(String[] args) { //Desktop对象的创建是通过getDesktop获取实例的 Desktop dt = Desktop.getDesktop(); //判断Desktop类是否支持当前平台 if(dt.isDesktopSupported()){ System.out.println("your platform supproted desktop class!"); } //Desktop.Action是枚举类型 有browse edit open mail print这些系统操作 //下面方法可以判断是否支持该操作 System.out.println(dt.isSupported(Desktop.Action.MAIL)); System.out.println(dt.isSupported(Desktop.Action.EDIT)); System.out.println(dt.isSupported(Desktop.Action.OPEN)); System.out.println(dt.isSupported(Desktop.Action.BROWSE)); System.out.println(dt.isSupported(Desktop.Action.PRINT)); //默认用了记事本 File text = new File("e:/test.txt"); try { dt.edit(text); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //jsp默认用了Sublime Text2 确实用该编辑器打开了 File jsp = new File("e:/test.jsp"); try { dt.open(jsp); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //打印的发生了IO异常 连到系统上的设备没有发挥作用 应该是电脑没有打印机的关系 try { dt.print(jsp); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //使用了默认的浏览器打开 URI uri; try { uri = new URI("www.csdn.net"); dt.browse(uri); } catch (URISyntaxException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
写完这个之后,进行代码的修改,只针对浏览器批量打开URI。
import java.awt.Desktop; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; public class Main { public static void test(String uristring) { try { URI uri = new URI(uristring); Desktop dp = Desktop.getDesktop(); if (dp.isSupported(Desktop.Action.BROWSE)) { dp.browse(uri); } } catch (IOException e) { System.out.println("Browser open URI fail"); } catch (URISyntaxException e) { System.out.println("URI is illegal"); } } }
因为针对的是众多多变的URI,所以不能在程序中写死为字符串数组,最好的方法还是用图形界面,直接拿之前写过的Swing工具修改即可。
import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; /** * @author ckc 2015-4-10 14:39:13 * 当前版本是针对最新的http://download.123cw.cn/AppDownload/ * App/SingleGame/mm/bydr401.apk 输入 一组url之后 让系统默认的浏览器 火狐将他们逐一打开 * desktop这个类还是蛮好用的 * * */ public class TestSingleGame { // 两个监听器需要用到的变量—— 两个文本域 一个输入一个输出 将其放到全局变量中 static JTextArea text = new JTextArea(25, 40); static JScrollPane outjsp = new JScrollPane(); public static void main(String[] args) { JFrame frame = new JFrame("OpenURLInExplorer"); // 行数,列数 BorderLayout layout = new BorderLayout(); // 窗体大小,窗体位置 frame.setSize(600, 500); frame.setLocation(400, 200); Container container = frame.getContentPane(); container.setLayout(layout); JTextField field = new JTextField("url地址:请将地址复制于此并按start运行"); field.setEditable(false); // int rows int columns // JTextArea text = new JTextArea(15,80); // text.setLineWrap(true); 没有滚动条的时候 true为超出文本框部分也计入 // // 滚动条的添加 JScrollPane jsp = new JScrollPane(text); // int rows int columns Box box = Box.createVerticalBox(); JPanel p = new JPanel(); BoxLayout blayout = new BoxLayout(p, BoxLayout.Y_AXIS); p.setLayout(blayout); p.add(field); p.add(jsp); // frame.setContentPane(p); // frame.setLayout(layout); JPanel p2 = new JPanel(); BoxLayout blayout2 = new BoxLayout(p2, BoxLayout.Y_AXIS); p2.setLayout(blayout2); p2.add(outjsp); JButton b = new JButton( "start to open every uri at your default browser"); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // /n为换行符 空字符串直接跳过 String[] array = text.getText().split("\n"); for (int i = 0; i < array.length; i++) { Main.test(array[i]); } } }); container.add(p, "North"); container.add(b, "Center"); // frame.pack(); frame.setResizable(false); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
最后的结果:
将网址全部录入文本框中,按执行后便会在默认的浏览器中打开。
时间: 2024-10-11 18:07:55