﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-极限编程员-随笔分类-JAVA基础类</title><link>http://www.blogjava.net/feng0801/category/54450.html</link><description>学习交流平台</description><language>zh-cn</language><lastBuildDate>Sun, 25 Jan 2015 23:06:31 GMT</lastBuildDate><pubDate>Sun, 25 Jan 2015 23:06:31 GMT</pubDate><ttl>60</ttl><item><title>如何以Java实现网页截图技术</title><link>http://www.blogjava.net/feng0801/archive/2015/01/21/422317.html</link><dc:creator>冯威威</dc:creator><author>冯威威</author><pubDate>Wed, 21 Jan 2015 04:00:00 GMT</pubDate><guid>http://www.blogjava.net/feng0801/archive/2015/01/21/422317.html</guid><wfw:comment>http://www.blogjava.net/feng0801/comments/422317.html</wfw:comment><comments>http://www.blogjava.net/feng0801/archive/2015/01/21/422317.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feng0801/comments/commentRss/422317.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feng0801/services/trackbacks/422317.html</trackback:ping><description><![CDATA[<p>今天看到某网友关于&#8220;如何以Java实现网页截图技术&#8221;的咨询帖，由于出现该咨询的地点非常不适合较长回复，故以博文形式回答。</p>
<p>&nbsp;</p>
<p>事实上，如果您想以Java实现网页截图，也就是&#8220;输入一段网址，几秒钟过后就能截取一张网页缩略图&#8221;的效果。那么，您至少有3种方式可以选择。</p>
<p>&nbsp;</p>
<p><span style="color: #ff6600">1、最直接的方式&#8212;&#8212;使用Robot</span> </p>
<p>&nbsp;</p>
<p><strong>方法详解：该方法利用Robat提供的强大桌面操作能力，硬性调用浏览器打开指定网页，并将网页信息保存到本地。</strong> </p>
<p>&nbsp;</p>
<p>优势：简单易用，不需要任何第三方插件。</p>
<p>&nbsp;</p>
<p>缺点：不能同时处理大量数据，技术含量过低，属于应急型技巧。</p>
<p>&nbsp;</p>
<p>实现方法：使用如下代码即可</p><br />
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="dp-highlighter bg_java">
<div class="bar">
<div class="tools"><strong>[java]</strong> <a class="ViewSource" title="view plain" href="#">view plain</a><a class="CopyToClipboard" title="copy" href="http://www.blogjava.net/feng0801/admin/EditPosts.aspx?opt=1#">copy</a><a class="PrintSource" title="print" href="#">print</a><a class="About" title="?" href="http://www.blogjava.net/feng0801/admin/EditPosts.aspx?opt=1#">?</a></div></div>
<ol class="dp-j"><li class="alt"><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main(String[]&nbsp;args)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;MalformedURLException,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOException,&nbsp;URISyntaxException,&nbsp;AWTException&nbsp;{&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//此方法仅适用于JdK1.6及以上版本 </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;Desktop.getDesktop().browse(&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">new</span><span>&nbsp;URL(</span><span class="string">"http://google.com/intl/en/"</span><span>).toURI());&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;Robot&nbsp;robot&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Robot();&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;robot.delay(</span><span class="number">10000</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;Dimension&nbsp;d&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Dimension(Toolkit.getDefaultToolkit().getScreenSize());&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;width&nbsp;=&nbsp;(</span><span class="keyword">int</span><span>)&nbsp;d.getWidth();&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;height&nbsp;=&nbsp;(</span><span class="keyword">int</span><span>)&nbsp;d.getHeight();&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//最大化浏览器 </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;robot.keyRelease(KeyEvent.VK_F11);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;robot.delay(</span><span class="number">2000</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;Image&nbsp;image&nbsp;=&nbsp;robot.createScreenCapture(</span><span class="keyword">new</span><span>&nbsp;Rectangle(</span><span class="number">0</span><span>,&nbsp;</span><span class="number">0</span><span>,&nbsp;width,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height));&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;bi&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;BufferedImage(width,&nbsp;height,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage.TYPE_INT_RGB);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;Graphics&nbsp;g&nbsp;=&nbsp;bi.createGraphics();&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;g.drawImage(image,&nbsp;</span><span class="number">0</span><span>,&nbsp;</span><span class="number">0</span><span>,&nbsp;width,&nbsp;height,&nbsp;</span><span class="keyword">null</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//保存图片 </span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;ImageIO.write(bi,&nbsp;</span><span class="string">"jpg"</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;File(</span><span class="string">"google.jpg"</span><span>));&nbsp;&nbsp;</span></span></li><li><span>}&nbsp;&nbsp;</span></li></ol></div><textarea style="display: none" class="java" rows="15" cols="50" name="code">	public static void main(String[] args) throws MalformedURLException,
			IOException, URISyntaxException, AWTException {
		//此方法仅适用于JdK1.6及以上版本
		Desktop.getDesktop().browse(
				new URL("http://google.com/intl/en/").toURI());
		Robot robot = new Robot();
		robot.delay(10000);
		Dimension d = new Dimension(Toolkit.getDefaultToolkit().getScreenSize());
		int width = (int) d.getWidth();
		int height = (int) d.getHeight();
		//最大化浏览器
		robot.keyRelease(KeyEvent.VK_F11);
		robot.delay(2000);
		Image image = robot.createScreenCapture(new Rectangle(0, 0, width,
				height));
		BufferedImage bi = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_RGB);
		Graphics g = bi.createGraphics();
		g.drawImage(image, 0, 0, width, height, null);
		//保存图片
		ImageIO.write(bi, "jpg", new File("google.jpg"));
	}
</textarea> 
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="color: #ff6600">2、最常规的方式&#8212;&#8212;利用JNI，调用第三方C/C++组件</span> <br /></p>
<p><strong>方法详解：目前来讲，Java领域对于网页截图组件的开发明显不足（商机？），当您需要完成此种操作时，算得上碰到了Java的软肋。但是，众所周知Java也拥有强大的JNI能力，可以轻易将C/C++开发的同类组件引为己用。</strong> </p>
<p>优势：实现简单，只需要封装对应的DLL文件，就可以让Java实现同类功能。</p>
<p>&nbsp;</p>
<p>劣势：同其他JNI实现一样，在跨平台时存在隐患，而且您的程序将不再属于纯Java应用。</p>
<p>&nbsp;</p>
<p>实现方法：可参见此用例，具体封装何种C/C++组件请自行选择。</p>
<p>&nbsp;</p>
<p>PS：示例来源于ACA HTML to Image Converter项目（<a href="http://www.acasystems.com/en/web-thumb-activex/faq-convert-html-to-image-in-java.htm">http://www.acasystems.com/en/web-thumb-activex/faq-convert-html-to-image-in-java.htm</a> ），这是一个收费的HTML转Image第三方组件，但封装方式在Java中大同小异。</p>
<p>&nbsp;</p>
<p>引用JNI封装：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="dp-highlighter bg_java">
<div class="bar">
<div class="tools"><strong>[java]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/cping1982/article/details/5353049#"><u><font color="#0000ff">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/cping1982/article/details/5353049#"><u><font color="#0000ff">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/cping1982/article/details/5353049#"><u><font color="#0000ff">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/cping1982/article/details/5353049#"><u><font color="#0000ff">?</font></u></a></div></div>
<ol class="dp-j"><li class="alt"><span class="keyword">import</span><span>&nbsp;sun.awt.*;&nbsp;&nbsp;</span></li><li><span></span><span class="keyword">import</span><span>&nbsp;java.awt.*;&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;javax.swing.*;&nbsp;&nbsp;</span></span></li><li><span></span><span class="keyword">import</span><span>&nbsp;java.awt.event.*;&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;java.awt.*;&nbsp;&nbsp;</span></span></li><li><span></span><span class="keyword">import</span><span>&nbsp;java.awt.peer.*;&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Snap&nbsp;&nbsp;</span></span></li><li><span>{&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">static</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;{&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;System.loadLibrary(</span><span class="string">"Snap"</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main(&nbsp;String[]&nbsp;argv&nbsp;)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;{&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Snap&nbsp;t_xSnap&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Snap();&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;t_xSnap.Start(</span><span class="string">"http://www.google.com"</span><span>,&nbsp;</span><span class="string">"snapshot-google.png"</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">native</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;Start(String&nbsp;pi_strURL,&nbsp;String&nbsp;pi_strImageName);&nbsp;&nbsp;</span></span></li><li class="alt"><span>}&nbsp;&nbsp;</span></li></ol></div>
<p><textarea style="display: none" class="java" rows="15" cols="50" name="code">import sun.awt.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.peer.*;
public class Snap
{
  static
  {
    System.loadLibrary("Snap");
  }
  public static void main( String[] argv )
  {
    Snap t_xSnap = new Snap();
    t_xSnap.Start("http://www.google.com", "snapshot-google.png");
  }
  public native void Start(String pi_strURL, String pi_strImageName);
}
</textarea> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>CPP部分的实现：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="dp-highlighter bg_java">
<div class="bar">
<div class="tools"><strong>[java]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/cping1982/article/details/5353049#"><u><font color="#0000ff">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/cping1982/article/details/5353049#"><u><font color="#0000ff">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/cping1982/article/details/5353049#"><u><font color="#0000ff">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/cping1982/article/details/5353049#"><u><font color="#0000ff">?</font></u></a></div></div>
<ol class="dp-j"><li class="alt"><span>#include&nbsp;&lt;windows.h&gt;&nbsp;&nbsp;</span></li><li><span>#include&nbsp;&lt;atlbase.h&gt;&nbsp;&nbsp;</span></li><li class="alt"><span>#include&nbsp;</span><span class="string">"snap.h"</span><span>&nbsp;&nbsp;</span></span></li><li><span>#pragma&nbsp;comment(lib,</span><span class="string">"atl.lib"</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>#</span><span class="keyword">import</span><span>&nbsp;</span><span class="string">"./../../acawebthumb.dll"</span><span>&nbsp;no_namespace&nbsp;&nbsp;</span></span></li><li><span>JNIEXPORT&nbsp;</span><span class="keyword">void</span><span>&nbsp;JNICALL&nbsp;Java_Snap_Start(JNIEnv&nbsp;*pEnv,&nbsp;jobject,&nbsp;jstring&nbsp;pi_strUrl,&nbsp;jstring&nbsp;pi_strFileName)&nbsp;&nbsp;</span></span></li><li class="alt"><span>{&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;CoInitialize(</span><span class="number">0</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;_bstr_t&nbsp;t_strUrl&nbsp;=&nbsp;pEnv-&gt;GetStringUTFChars(pi_strUrl,&nbsp;</span><span class="number">0</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;_bstr_t&nbsp;t_strFileName&nbsp;=&nbsp;pEnv-&gt;GetStringUTFChars(pi_strFileName,&nbsp;</span><span class="number">0</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;IThumbMakerPtr&nbsp;HTML_Converter&nbsp;=&nbsp;NULL;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;HRESULT&nbsp;hr&nbsp;=&nbsp;HTML_Converter.CreateInstance(L</span><span class="string">"ACAWebThumb.ThumbMaker"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(SUCCEEDED(hr))&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;HTML_Converter-&gt;SetURL(t_strUrl);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(&nbsp;</span><span class="number">0</span><span>&nbsp;==&nbsp;HTML_Converter-&gt;StartSnap()&nbsp;)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTML_Converter-&gt;SaveImage(t_strFileName);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(HTML_Converter)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;HTML_Converter.Release();&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;CoUninitialize();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>}&nbsp;&nbsp;</span></li></ol></div>
<p><textarea style="display: none" class="java" rows="15" cols="50" name="code">#include &lt;windows.h&gt;
#include &lt;atlbase.h&gt;
#include "snap.h"
#pragma comment(lib,"atl.lib")
#import "./../../acawebthumb.dll" no_namespace
JNIEXPORT void JNICALL Java_Snap_Start(JNIEnv *pEnv, jobject, jstring pi_strUrl, jstring pi_strFileName)
{
  CoInitialize(0);
  _bstr_t t_strUrl = pEnv-&gt;GetStringUTFChars(pi_strUrl, 0);
  _bstr_t t_strFileName = pEnv-&gt;GetStringUTFChars(pi_strFileName, 0);	
  IThumbMakerPtr HTML_Converter = NULL;
  HRESULT hr = HTML_Converter.CreateInstance(L"ACAWebThumb.ThumbMaker");	
  if (SUCCEEDED(hr))
  { 
    HTML_Converter-&gt;SetURL(t_strUrl);
    if ( 0 == HTML_Converter-&gt;StartSnap() )
      HTML_Converter-&gt;SaveImage(t_strFileName);
  }
  if (HTML_Converter)
    HTML_Converter.Release();
  CoUninitialize();    	  	
}
</textarea> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>以该组件图像化yahoo界面的效果图：</p>
<p>&nbsp;</p>
<p><img alt="00" src="http://image.acasystems.com/html-to-image-converter/ex-www.yahoo.com-200.jpg" width="200" height="216" /> </p>
<p><span style="color: #ff6600"><br /></span></p>
<p><span style="color: #ff6600">3、最扎实的方法&#8212;&#8212;自行解析HTML标记，并将其图像化</span> </p>
<p>&nbsp;</p>
<p><strong>方法详解：众所周知，HTML之所以在浏览器中以具体的网页格式出现，并非服务器端传了一整个应用到客户端，而是源自于浏览器对于客户端自行解析的结果。因此，只要我们将对应的解析一一实现，那么将网页图形化，就将不是什么难事。</strong> </p>
<p><strong><br /></strong></p>
<p>优势：纯Java实现，一劳永逸，一旦开发完成则永远通用，而且有一定的商用价值。</p>
<p>&nbsp;</p>
<p>劣势：开发费时，且需要针对不同语法做精确分析，才能保证输出的基本正确。尤其在涉及到JavaScript解析时，难度将尤其增大。</p>
<p>&nbsp;</p>
<p>实现方法：目前尚无具体案例可供参考。但是，由于Java有jdic之类的浏览器项目存在（<a href="https://jdic.dev.java.net/">https://jdic.dev.java.net/</a> ），而Java图形界面又属绘制生成。从理论上说，我们可以将所有具备Graphics的组件图形化保存。</p>
<p>&nbsp;</p>
<p>而如果自行解析，那么您需要建立HTML解析器（或使用第三方的，万幸Java在这方面的组件很多），了解Java2D机制，了解何时该使用drawString绘制文字，何时又该使用drawImage插入图片等等。</p>
<p>&nbsp;</p>
<p><span style="color: #000000"><br /></span></p>
<p><strong><span style="color: #000000">补充：</span> </strong></p>
<p>&nbsp;</p>
<p>这是一个利用内置浏览器截图的示例，使用了DJNativeSwing组件。</p>
<p>&nbsp;</p>
<p>示例工程下载地址（Eclipse工程，含lib）：<a href="http://greenvm.googlecode.com/files/Screenshot.7z">http://greenvm.googlecode.com/files/Screenshot.7z</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="dp-highlighter bg_java">
<div class="bar">
<div class="tools"><strong>[java]</strong> <a class="ViewSource" title="view plain" href="http://blog.csdn.net/cping1982/article/details/5353049#"><u><font color="#0000ff">view plain</font></u></a><a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/cping1982/article/details/5353049#"><u><font color="#0000ff">copy</font></u></a><a class="PrintSource" title="print" href="http://blog.csdn.net/cping1982/article/details/5353049#"><u><font color="#0000ff">print</font></u></a><a class="About" title="?" href="http://blog.csdn.net/cping1982/article/details/5353049#"><u><font color="#0000ff">?</font></u></a></div></div>
<ol class="dp-j"><li class="alt"><span class="keyword">import</span><span>&nbsp;java.awt.BorderLayout;&nbsp;&nbsp;</span></li><li><span></span><span class="keyword">import</span><span>&nbsp;java.awt.Dimension;&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;java.awt.FlowLayout;&nbsp;&nbsp;</span></span></li><li><span></span><span class="keyword">import</span><span>&nbsp;java.awt.image.BufferedImage;&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;java.io.File;&nbsp;&nbsp;</span></span></li><li><span></span><span class="keyword">import</span><span>&nbsp;java.io.IOException;&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;javax.imageio.ImageIO;&nbsp;&nbsp;</span></span></li><li><span></span><span class="keyword">import</span><span>&nbsp;javax.swing.JFrame;&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;javax.swing.JPanel;&nbsp;&nbsp;</span></span></li><li><span></span><span class="keyword">import</span><span>&nbsp;javax.swing.SwingUtilities;&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;chrriis.dj.nativeswing.swtimpl.NativeComponent;&nbsp;&nbsp;</span></span></li><li><span></span><span class="keyword">import</span><span>&nbsp;chrriis.dj.nativeswing.swtimpl.NativeInterface;&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;&nbsp;&nbsp;</span></span></li><li><span></span><span class="keyword">import</span><span>&nbsp;chrriis.dj.nativeswing.swtimpl.components.WebBrowserAdapter;&nbsp;&nbsp;</span></span></li><li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;chrriis.dj.nativeswing.swtimpl.components.WebBrowserEvent;&nbsp;&nbsp;</span></span></li><li><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Main&nbsp;</span><span class="keyword">extends</span><span>&nbsp;JPanel&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**</span>&nbsp;</span></li><li><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span>&nbsp;</li><li class="alt"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">final</span><span>&nbsp;</span><span class="keyword">long</span><span>&nbsp;serialVersionUID&nbsp;=&nbsp;1L;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;行分隔符 </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">final</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;LS&nbsp;=&nbsp;System.getProperty(</span><span class="string">"line.separator"</span><span>,&nbsp;</span><span class="string">"/n"</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;文件分割符 </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">final</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;FS&nbsp;=&nbsp;System.getProperty(</span><span class="string">"file.separator"</span><span>,&nbsp;</span><span class="string">"//"</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//以javascript脚本获得网页全屏后大小 </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">final</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;StringBuffer&nbsp;jsDimension;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">static</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;StringBuffer();&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(</span><span class="string">"var&nbsp;width&nbsp;=&nbsp;0;"</span><span>).append(LS);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(</span><span class="string">"var&nbsp;height&nbsp;=&nbsp;0;"</span><span>).append(LS);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(</span><span class="string">"if(document.documentElement)&nbsp;{"</span><span>).append(LS);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">"&nbsp;&nbsp;width&nbsp;=&nbsp;Math.max(width,&nbsp;document.documentElement.scrollWidth);"</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(LS);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">"&nbsp;&nbsp;height&nbsp;=&nbsp;Math.max(height,&nbsp;document.documentElement.scrollHeight);"</span><span>)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(LS);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(</span><span class="string">"}"</span><span>).append(LS);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(</span><span class="string">"if(self.innerWidth)&nbsp;{"</span><span>).append(LS);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(</span><span class="string">"&nbsp;&nbsp;width&nbsp;=&nbsp;Math.max(width,&nbsp;self.innerWidth);"</span><span>)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(LS);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(</span><span class="string">"&nbsp;&nbsp;height&nbsp;=&nbsp;Math.max(height,&nbsp;self.innerHeight);"</span><span>)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(LS);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(</span><span class="string">"}"</span><span>).append(LS);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(</span><span class="string">"if(document.body.scrollWidth)&nbsp;{"</span><span>).append(LS);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">"&nbsp;&nbsp;width&nbsp;=&nbsp;Math.max(width,&nbsp;document.body.scrollWidth);"</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(LS);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">"&nbsp;&nbsp;height&nbsp;=&nbsp;Math.max(height,&nbsp;document.body.scrollHeight);"</span><span>)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.append(LS);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(</span><span class="string">"}"</span><span>).append(LS);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jsDimension.append(</span><span class="string">"return&nbsp;width&nbsp;+&nbsp;':'&nbsp;+&nbsp;height;"</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span><span class="comment">//DJNativeSwing组件请于http://djproject.sourceforge.net/main/index.html下载 </span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;Main(</span><span class="keyword">final</span><span>&nbsp;String&nbsp;url,&nbsp;</span><span class="keyword">final</span><span>&nbsp;</span><span class="keyword">int</span><span>&nbsp;maxWidth,&nbsp;</span><span class="keyword">final</span><span>&nbsp;</span><span class="keyword">int</span><span>&nbsp;maxHeight)&nbsp;{&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">super</span><span>(</span><span class="keyword">new</span><span>&nbsp;BorderLayout());&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JPanel&nbsp;webBrowserPanel&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;JPanel(</span><span class="keyword">new</span><span>&nbsp;BorderLayout());&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">final</span><span>&nbsp;String&nbsp;fileName&nbsp;=&nbsp;System.currentTimeMillis()&nbsp;+&nbsp;</span><span class="string">".jpg"</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">final</span><span>&nbsp;JWebBrowser&nbsp;webBrowser&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;JWebBrowser(</span><span class="keyword">null</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;webBrowser.setBarsVisible(</span><span class="keyword">false</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;webBrowser.navigate(url);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;webBrowserPanel.add(webBrowser,&nbsp;BorderLayout.CENTER);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(webBrowserPanel,&nbsp;BorderLayout.CENTER);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JPanel&nbsp;panel&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;JPanel(</span><span class="keyword">new</span><span>&nbsp;FlowLayout(FlowLayout.CENTER,&nbsp;</span><span class="number">4</span><span>,&nbsp;</span><span class="number">4</span><span>));&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;webBrowser.addWebBrowserListener(</span><span class="keyword">new</span><span>&nbsp;WebBrowserAdapter()&nbsp;{&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;监听加载进度 </span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;loadingProgressChanged(WebBrowserEvent&nbsp;e)&nbsp;{&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;当加载完毕时 </span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(e.getWebBrowser().getLoadingProgress()&nbsp;==&nbsp;</span><span class="number">100</span><span>)&nbsp;{&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;result&nbsp;=&nbsp;(String)&nbsp;webBrowser&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.executeJavascriptWithResult(jsDimension.toString());&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;index&nbsp;=&nbsp;result&nbsp;==&nbsp;</span><span class="keyword">null</span><span>&nbsp;?&nbsp;-</span><span class="number">1</span><span>&nbsp;:&nbsp;result.indexOf(</span><span class="string">":"</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NativeComponent&nbsp;nativeComponent&nbsp;=&nbsp;webBrowser&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getNativeComponent();&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension&nbsp;originalSize&nbsp;=&nbsp;nativeComponent.getSize();&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension&nbsp;imageSize&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Dimension(Integer.parseInt(result&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.substring(</span><span class="number">0</span><span>,&nbsp;index)),&nbsp;Integer.parseInt(result&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.substring(index&nbsp;+&nbsp;</span><span class="number">1</span><span>)));&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imageSize.width&nbsp;=&nbsp;Math.max(originalSize.width,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imageSize.width&nbsp;+&nbsp;</span><span class="number">50</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imageSize.height&nbsp;=&nbsp;Math.max(originalSize.height,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imageSize.height&nbsp;+&nbsp;</span><span class="number">50</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nativeComponent.setSize(imageSize);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;image&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;BufferedImage(imageSize.width,&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imageSize.height,&nbsp;BufferedImage.TYPE_INT_RGB);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nativeComponent.paintComponent(image);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nativeComponent.setSize(originalSize);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;当网页超出目标大小时 </span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(imageSize.width&nbsp;&gt;&nbsp;maxWidth&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||&nbsp;imageSize.height&nbsp;&gt;&nbsp;maxHeight)&nbsp;{&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//截图部分图形 </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image&nbsp;=&nbsp;image.getSubimage(</span><span class="number">0</span><span>,&nbsp;</span><span class="number">0</span><span>,&nbsp;maxWidth,&nbsp;maxHeight);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/*此部分为使用缩略图</span>&nbsp;</span></li><li><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;width&nbsp;=&nbsp;image.getWidth(),&nbsp;height&nbsp;=&nbsp;image</span>&nbsp;</li><li class="alt"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.getHeight();</span>&nbsp;</li><li><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AffineTransform&nbsp;tx&nbsp;=&nbsp;new&nbsp;AffineTransform();</span>&nbsp;</li><li class="alt"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tx.scale((double)&nbsp;maxWidth&nbsp;/&nbsp;width,&nbsp;(double)&nbsp;maxHeight</span>&nbsp;</li><li><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;height);</span>&nbsp;</li><li class="alt"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AffineTransformOp&nbsp;op&nbsp;=&nbsp;new&nbsp;AffineTransformOp(tx,</span>&nbsp;</li><li><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AffineTransformOp.TYPE_NEAREST_NEIGHBOR);</span>&nbsp;</li><li class="alt"><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//缩小</span>&nbsp;</li><li><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image&nbsp;=&nbsp;op.filter(image,&nbsp;null);*/</span><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;输出图像 </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ImageIO.write(image,&nbsp;</span><span class="string">"jpg"</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;File(fileName));&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(IOException&nbsp;ex)&nbsp;{&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;退出操作 </span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.exit(</span><span class="number">0</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(panel,&nbsp;BorderLayout.SOUTH);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NativeInterface.open();&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SwingUtilities.invokeLater(</span><span class="keyword">new</span><span>&nbsp;Runnable()&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;run()&nbsp;{&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;SWT组件转Swing组件，不初始化父窗体将无法启动webBrowser </span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JFrame&nbsp;frame&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;JFrame(</span><span class="string">"以DJ组件保存指定网页截图"</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;加载指定页面，最大保存为640x480的截图 </span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.getContentPane().add(&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">new</span><span>&nbsp;Main(</span><span class="string">"http://blog.csdn.net/cping1982"</span><span>,&nbsp;</span><span class="number">640</span><span>,&nbsp;</span><span class="number">480</span><span>),&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BorderLayout.CENTER);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setSize(</span><span class="number">800</span><span>,&nbsp;</span><span class="number">600</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;仅初始化，但不显示 </span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.invalidate();&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.pack();&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame.setVisible(</span><span class="keyword">false</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NativeInterface.runEventPump();&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li class="alt"><span>}&nbsp;&nbsp;</span></li></ol></div>
<p><textarea style="display: none" class="java" rows="15" cols="50" name="code">import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import chrriis.dj.nativeswing.swtimpl.NativeComponent;
import chrriis.dj.nativeswing.swtimpl.NativeInterface;
import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserAdapter;
import chrriis.dj.nativeswing.swtimpl.components.WebBrowserEvent;
public class Main extends JPanel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	// 行分隔符
	final static public String LS = System.getProperty("line.separator", "/n");
	// 文件分割符
	final static public String FS = System.getProperty("file.separator", "//");
	//以javascript脚本获得网页全屏后大小
	final static StringBuffer jsDimension;
	
	static {
		jsDimension = new StringBuffer();
		jsDimension.append("var width = 0;").append(LS);
		jsDimension.append("var height = 0;").append(LS);
		jsDimension.append("if(document.documentElement) {").append(LS);
		jsDimension.append(
						"  width = Math.max(width, document.documentElement.scrollWidth);")
				.append(LS);
		jsDimension.append(
						"  height = Math.max(height, document.documentElement.scrollHeight);")
				.append(LS);
		jsDimension.append("}").append(LS);
		jsDimension.append("if(self.innerWidth) {").append(LS);
		jsDimension.append("  width = Math.max(width, self.innerWidth);")
				.append(LS);
		jsDimension.append("  height = Math.max(height, self.innerHeight);")
				.append(LS);
		jsDimension.append("}").append(LS);
		jsDimension.append("if(document.body.scrollWidth) {").append(LS);
		jsDimension.append(
				"  width = Math.max(width, document.body.scrollWidth);")
				.append(LS);
		jsDimension.append(
				"  height = Math.max(height, document.body.scrollHeight);")
				.append(LS);
		jsDimension.append("}").append(LS);
		jsDimension.append("return width + ':' + height;");
	}
  //DJNativeSwing组件请于http://djproject.sourceforge.net/main/index.html下载
	public Main(final String url, final int maxWidth, final int maxHeight) {
		super(new BorderLayout());
		JPanel webBrowserPanel = new JPanel(new BorderLayout());
		final String fileName = System.currentTimeMillis() + ".jpg";
		final JWebBrowser webBrowser = new JWebBrowser(null);
		webBrowser.setBarsVisible(false);
		webBrowser.navigate(url);
		webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
		add(webBrowserPanel, BorderLayout.CENTER);
		JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 4, 4));
		webBrowser.addWebBrowserListener(new WebBrowserAdapter() {
			// 监听加载进度
			public void loadingProgressChanged(WebBrowserEvent e) {
				// 当加载完毕时
				if (e.getWebBrowser().getLoadingProgress() == 100) {
					String result = (String) webBrowser
							.executeJavascriptWithResult(jsDimension.toString());
					int index = result == null ? -1 : result.indexOf(":");
					NativeComponent nativeComponent = webBrowser
							.getNativeComponent();
					Dimension originalSize = nativeComponent.getSize();
					Dimension imageSize = new Dimension(Integer.parseInt(result
							.substring(0, index)), Integer.parseInt(result
							.substring(index + 1)));
					imageSize.width = Math.max(originalSize.width,
							imageSize.width + 50);
					imageSize.height = Math.max(originalSize.height,
							imageSize.height + 50);
					nativeComponent.setSize(imageSize);
					BufferedImage image = new BufferedImage(imageSize.width,
							imageSize.height, BufferedImage.TYPE_INT_RGB);
					nativeComponent.paintComponent(image);
					nativeComponent.setSize(originalSize);
					// 当网页超出目标大小时
					if (imageSize.width &gt; maxWidth
							|| imageSize.height &gt; maxHeight) {
						//截图部分图形
						image = image.getSubimage(0, 0, maxWidth, maxHeight);
						/*此部分为使用缩略图
						int width = image.getWidth(), height = image
							.getHeight();
						 AffineTransform tx = new AffineTransform();
						tx.scale((double) maxWidth / width, (double) maxHeight
								/ height);
						AffineTransformOp op = new AffineTransformOp(tx,
								AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
						//缩小
						image = op.filter(image, null);*/
					}
					try {
						// 输出图像
						ImageIO.write(image, "jpg", new File(fileName));
					} catch (IOException ex) {
						ex.printStackTrace();
					}
					// 退出操作
					System.exit(0);
				}
			}
		}
		);
		add(panel, BorderLayout.SOUTH);
	}
	public static void main(String[] args) {
		NativeInterface.open();
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				// SWT组件转Swing组件，不初始化父窗体将无法启动webBrowser
				JFrame frame = new JFrame("以DJ组件保存指定网页截图");
				// 加载指定页面，最大保存为640x480的截图
				frame.getContentPane().add(
						new Main("http://blog.csdn.net/cping1982", 640, 480),
						BorderLayout.CENTER);
				frame.setSize(800, 600);
				// 仅初始化，但不显示
				frame.invalidate();
				frame.pack();
				frame.setVisible(false);
			}
		});
		NativeInterface.runEventPump();
	}
}
</textarea> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p><img src ="http://www.blogjava.net/feng0801/aggbug/422317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feng0801/" target="_blank">冯威威</a> 2015-01-21 12:00 <a href="http://www.blogjava.net/feng0801/archive/2015/01/21/422317.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java修改xml文件</title><link>http://www.blogjava.net/feng0801/archive/2014/07/29/401396.html</link><dc:creator>冯威威</dc:creator><author>冯威威</author><pubDate>Tue, 29 Jul 2014 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/feng0801/archive/2014/07/29/401396.html</guid><wfw:comment>http://www.blogjava.net/feng0801/comments/401396.html</wfw:comment><comments>http://www.blogjava.net/feng0801/archive/2014/07/29/401396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feng0801/comments/commentRss/401396.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feng0801/services/trackbacks/401396.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">原始的message.xml<br /></span><span style="color: #000000">&lt;?</span><span style="color: #000000">xml&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">1.0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;encoding</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">?&gt;&lt;</span><span style="color: #000000">users</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">Messages</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">sendName</span><span style="color: #000000">&gt;</span><span style="color: #000000">sendUsers</span><span style="color: #000000">&lt;/</span><span style="color: #000000">sendName</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">receiveName</span><span style="color: #000000">&gt;</span><span style="color: #000000">snake</span><span style="color: #000000">&lt;/</span><span style="color: #000000">receiveName</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">date</span><span style="color: #000000">&gt;</span><span style="color: #000000">2007</span><span style="color: #000000">-</span><span style="color: #000000">12</span><span style="color: #000000">-</span><span style="color: #000000">04</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">12</span><span style="color: #000000">:</span><span style="color: #000000">20</span><span style="color: #000000">:</span><span style="color: #000000">00</span><span style="color: #000000">&lt;/</span><span style="color: #000000">date</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">status</span><span style="color: #000000">&gt;</span><span style="color: #000000">1</span><span style="color: #000000">&lt;/</span><span style="color: #000000">status</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">message</span><span style="color: #000000">&gt;</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;is&nbsp;Content</span><span style="color: #000000">&lt;/</span><span style="color: #000000">message</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">Messages</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">users</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><br />java程序<br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.File;<br /><br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.parsers.DocumentBuilder;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.parsers.DocumentBuilderFactory;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.transform.Transformer;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.transform.TransformerFactory;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.transform.dom.DOMSource;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.xml.transform.stream.StreamResult;<br /><br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.w3c.dom.Document;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.w3c.dom.Node;<br /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.w3c.dom.NodeList;<br /><br /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;UpdateXml&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;doc2XmlFile(Document&nbsp;document,&nbsp;String&nbsp;filename)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;flag&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TransformerFactory&nbsp;tFactory&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;TransformerFactory.newInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transformer&nbsp;transformer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;tFactory.newTransformer();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;transformer.setOutputProperty(OutputKeys.ENCODING,&nbsp;"GB2312");</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOMSource&nbsp;source&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DOMSource(document);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StreamResult&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StreamResult(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(filename));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transformer.transform(source,&nbsp;result);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;ex)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;flag;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Document&nbsp;load(String&nbsp;filename)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;document&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilderFactory&nbsp;factory&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DocumentBuilderFactory<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.newInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentBuilder&nbsp;builder&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;factory.newDocumentBuilder();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;builder.parse(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(filename));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.normalize();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;ex)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;document;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;xmlUpdateDemo()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;document&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;load(</span><span style="color: #000000">"</span><span style="color: #000000">message.xml</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;root&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getDocumentElement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(root.hasChildNodes())&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NodeList&nbsp;ftpnodes&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;root.getChildNodes();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;ftpnodes.getLength();&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NodeList&nbsp;ftplist&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ftpnodes.item(i).getChildNodes();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;k&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;k&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;ftplist.getLength();&nbsp;k</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;subnode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ftplist.item(k);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;if&nbsp;(subnode.getNodeType()==Node.ELEMENT_NODE&amp;&amp;subnode.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;getNodeName()=="ftp-chn")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;ftpnodes.item(i).removeChild(subnode);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;}</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(subnode.getNodeType()&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;Node.ELEMENT_NODE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;subnode.getNodeName()&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">status</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subnode.getFirstChild().setNodeValue(</span><span style="color: #000000">"</span><span style="color: #000000">9</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doc2XmlFile(document,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">message.xml</span><span style="color: #000000">"</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String&nbsp;args[])&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;Exception&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UpdateXml.xmlUpdateDemo();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />修改后的message.xml<br /></span><span style="color: #000000">&lt;?</span><span style="color: #000000">xml&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">1.0</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;encoding</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">?&gt;&lt;</span><span style="color: #000000">users</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">Messages</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">sendName</span><span style="color: #000000">&gt;</span><span style="color: #000000">sendUsers</span><span style="color: #000000">&lt;/</span><span style="color: #000000">sendName</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">receiveName</span><span style="color: #000000">&gt;</span><span style="color: #000000">snake</span><span style="color: #000000">&lt;/</span><span style="color: #000000">receiveName</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">date</span><span style="color: #000000">&gt;</span><span style="color: #000000">2007</span><span style="color: #000000">-</span><span style="color: #000000">12</span><span style="color: #000000">-</span><span style="color: #000000">04</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">12</span><span style="color: #000000">:</span><span style="color: #000000">20</span><span style="color: #000000">:</span><span style="color: #000000">00</span><span style="color: #000000">&lt;/</span><span style="color: #000000">date</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">status</span><span style="color: #000000">&gt;</span><span style="color: #000000">9</span><span style="color: #000000">&lt;/</span><span style="color: #000000">status</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">message</span><span style="color: #000000">&gt;</span><span style="color: #0000ff">this</span><span style="color: #000000">&nbsp;is&nbsp;Content</span><span style="color: #000000">&lt;/</span><span style="color: #000000">message</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">Messages</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">users</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span></div> <img src ="http://www.blogjava.net/feng0801/aggbug/401396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feng0801/" target="_blank">冯威威</a> 2014-07-29 17:05 <a href="http://www.blogjava.net/feng0801/archive/2014/07/29/401396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将string转换成inputstream</title><link>http://www.blogjava.net/feng0801/archive/2013/07/11/401464.html</link><dc:creator>冯威威</dc:creator><author>冯威威</author><pubDate>Thu, 11 Jul 2013 08:18:00 GMT</pubDate><guid>http://www.blogjava.net/feng0801/archive/2013/07/11/401464.html</guid><wfw:comment>http://www.blogjava.net/feng0801/comments/401464.html</wfw:comment><comments>http://www.blogjava.net/feng0801/archive/2013/07/11/401464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feng0801/comments/commentRss/401464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feng0801/services/trackbacks/401464.html</trackback:ping><description><![CDATA[<span style="line-height: 18px; background-color: rgb(245,245,245); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px"><font face="">String &nbsp; str &nbsp; = &nbsp; "";//add &nbsp; your &nbsp; string &nbsp; content<br /></font></span>
<p><span style="line-height: 18px; background-color: rgb(245,245,245); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px"><font face="">InputStream &nbsp; inputStream &nbsp; = &nbsp; new &nbsp; ByteArrayInputStream(str.getBytes());</font></span></p>
<p><span style="line-height: 18px; background-color: rgb(245,245,245); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px"><br /><font face=""></font></span></p>
<p><span style="line-height: 18px; background-color: rgb(245,245,245); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px"><span style="line-height: 24px; font-family: Arial, Helvetica, sans-serif; color: rgb(56,56,56); font-size: 14px"><font face=""></font></span></span></p><pre style="padding-bottom: 0px; margin-top: 0px; padding-left: 0px; padding-right: 0px; margin-bottom: 0px; padding-top: 0px"><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px"> 1</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,255); padding-top: 0px">package</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> org.kodejava.example.io;<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px"> 2</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> <br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px"> 3</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">&nbsp;</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,255); padding-top: 0px">import</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> java.io.ByteArrayInputStream;<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px"> 4</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">&nbsp;</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,255); padding-top: 0px">import</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> java.io.InputStream;<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px"> 5</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> <br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px"> 6</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">&nbsp;</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,255); padding-top: 0px">public</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> </span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,255); padding-top: 0px">class</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> StringToStream {<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px"> 7</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">    </span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,255); padding-top: 0px">public</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> </span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,255); padding-top: 0px">static</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> </span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,255); padding-top: 0px">void</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> main(String[] args) {<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px"> 8</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">        String text </span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">=</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> </span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">"</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">Converting String to InputStream Example</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">"</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">;<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px"> 9</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">         <br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">10</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">        </span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,0); padding-top: 0px">/*</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,0); padding-top: 0px"><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">11</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,0); padding-top: 0px">         * Convert String to InputString using ByteArrayInputStream class.<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">12</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,0); padding-top: 0px">         * This class constructor takes the string byte array which can be<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">13</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,0); padding-top: 0px">         * done by calling the getBytes() method.<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">14</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,0); padding-top: 0px">         </span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,0); padding-top: 0px">*/</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"><br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">15</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">        </span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,255); padding-top: 0px">try</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> {<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">16</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">            InputStream is </span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">=</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> </span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,255); padding-top: 0px">new</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> ByteArrayInputStream(text.getBytes(</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">"</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">UTF-8</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">"</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">));<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">17</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">        } </span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,255); padding-top: 0px">catch</span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px"> (UnsupportedEncodingException e) {<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">18</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">            e.printStackTrace();<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">19</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">        }<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">20</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">    }<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">21</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">}<br style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" /></span><span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,128,128); padding-top: 0px">22</span> <span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; color: rgb(0,0,0); padding-top: 0px">&nbsp;</span></pre><span style="line-height: 25px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px"></span>
<p>&nbsp;</p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px"><strong><br /></strong></p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px"><strong><br /></strong></p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px"><strong><br /></strong></p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px"><strong><br /></strong></p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px"><strong>1、字符串转inputStream</strong></p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">&nbsp;</p>
<div style="padding-bottom: 1px; overflow-x: auto; overflow-y: auto; background-color: transparent; padding-left: 1px; width: 694px; padding-right: 1px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; word-wrap: break-word; margin-left: 9px; font-size: 12px; word-break: break-all; padding-top: 1px" class="dp-highlighter">
<div class="bar">
<div style="text-align: left; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; color: black; font-weight: bold; padding-top: 3px" class="tools">Java代码&nbsp;&nbsp;<a style="color: rgb(16,138,198); text-decoration: underline" title="收藏这段代码" href="http://wuhongyu.iteye.com/blog/806791"></a></div></div>
<ol style="border-bottom: rgb(209,215,220) 1px solid; border-left: rgb(209,215,220) 1px solid; padding-bottom: 2px; line-height: 1.4em; background-color: rgb(255,255,255); list-style-type: decimal; margin: 0px 0px 1px; padding-left: 0px; padding-right: 0px; color: rgb(43,145,175); font-size: 1em; border-top: rgb(209,215,220) 1px solid; border-right: rgb(209,215,220) 1px solid; padding-top: 2px" class="dp-j"><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: black">String&nbsp;string;&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: rgb(0,130,0)" class="comment">//......</span><span style="color: black">&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">InputStream&nbsp;is&nbsp;=&nbsp;<span style="color: rgb(127,0,85); font-weight: bold" class="keyword">new</span><span style="color: black">&nbsp;ByteArrayInputStream(string.getBytes());&nbsp;&nbsp;</span></span></li></ol></div>&nbsp; 
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px"><strong>2、InputStream转字符串</strong></p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">&nbsp;</p>
<div style="padding-bottom: 1px; overflow-x: auto; overflow-y: auto; background-color: transparent; padding-left: 1px; width: 694px; padding-right: 1px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; word-wrap: break-word; margin-left: 9px; font-size: 12px; word-break: break-all; padding-top: 1px" class="dp-highlighter">
<div class="bar">
<div style="text-align: left; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; color: black; font-weight: bold; padding-top: 3px" class="tools">Java代码&nbsp;&nbsp;<a style="color: rgb(16,138,198); text-decoration: underline" title="收藏这段代码" href="http://wuhongyu.iteye.com/blog/806791"></a></div></div>
<ol style="border-bottom: rgb(209,215,220) 1px solid; border-left: rgb(209,215,220) 1px solid; padding-bottom: 2px; line-height: 1.4em; background-color: rgb(255,255,255); list-style-type: decimal; margin: 0px 0px 1px; padding-left: 0px; padding-right: 0px; color: rgb(43,145,175); font-size: 1em; border-top: rgb(209,215,220) 1px solid; border-right: rgb(209,215,220) 1px solid; padding-top: 2px" class="dp-j"><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: black">ByteArrayOutputStream&nbsp;baos&nbsp;=&nbsp;</span><span style="color: rgb(127,0,85); font-weight: bold" class="keyword">new</span><span style="color: black">&nbsp;ByteArrayOutputStream();&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: rgb(127,0,85); font-weight: bold" class="keyword">int</span><span style="color: black">&nbsp;i;&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: rgb(127,0,85); font-weight: bold" class="keyword">while</span><span style="color: black">&nbsp;((i&nbsp;=&nbsp;is.read())&nbsp;!=&nbsp;-</span><span style="color: rgb(192,0,0)" class="number">1</span><span style="color: black">)&nbsp;{&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;baos.write(i);&nbsp;&nbsp;</span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">}&nbsp;&nbsp;</span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">String&nbsp;str&nbsp;=&nbsp;baos.toString();&nbsp;&nbsp;</span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">System.out.println(str);&nbsp;&nbsp;</span></li></ol></div>&nbsp; 
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px"><strong>3、String写入OutputStream</strong></p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">&nbsp;</p>
<div style="padding-bottom: 1px; overflow-x: auto; overflow-y: auto; background-color: transparent; padding-left: 1px; width: 694px; padding-right: 1px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; word-wrap: break-word; margin-left: 9px; font-size: 12px; word-break: break-all; padding-top: 1px" class="dp-highlighter">
<div class="bar">
<div style="text-align: left; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; color: black; font-weight: bold; padding-top: 3px" class="tools">Java代码&nbsp;&nbsp;<a style="color: rgb(16,138,198); text-decoration: underline" title="收藏这段代码" href="http://wuhongyu.iteye.com/blog/806791"></a></div></div>
<ol style="border-bottom: rgb(209,215,220) 1px solid; border-left: rgb(209,215,220) 1px solid; padding-bottom: 2px; line-height: 1.4em; background-color: rgb(255,255,255); list-style-type: decimal; margin: 0px 0px 1px; padding-left: 0px; padding-right: 0px; color: rgb(43,145,175); font-size: 1em; border-top: rgb(209,215,220) 1px solid; border-right: rgb(209,215,220) 1px solid; padding-top: 2px" class="dp-j"><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: black">OutputStream&nbsp;os&nbsp;=&nbsp;System.out;&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">os.write(string.getBytes());&nbsp;&nbsp;</span></li></ol></div>&nbsp; 
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px"><strong>4、OutputStream写入String</strong></p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">这听起来有点荒谬，OutputStream本来就是输出源，还写入String?</p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">不过最近项目里确实遇到了个类似的问题，比如 SOAPMessage.writeTo(OutputStream os) 这个方法，是将SOAPMessage的内容写到一个输出流中，而我想得到这个流的内容，总不能把他先写进文件再去读这个文件吧，研究了好半天，终于想起可以如下这般：</p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">&nbsp;</p>
<div style="padding-bottom: 1px; overflow-x: auto; overflow-y: auto; background-color: transparent; padding-left: 1px; width: 694px; padding-right: 1px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; word-wrap: break-word; margin-left: 9px; font-size: 12px; word-break: break-all; padding-top: 1px" class="dp-highlighter">
<div class="bar">
<div style="text-align: left; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; color: black; font-weight: bold; padding-top: 3px" class="tools">Java代码&nbsp;&nbsp;<a style="color: rgb(16,138,198); text-decoration: underline" title="收藏这段代码" href="http://wuhongyu.iteye.com/blog/806791"></a></div></div>
<ol style="border-bottom: rgb(209,215,220) 1px solid; border-left: rgb(209,215,220) 1px solid; padding-bottom: 2px; line-height: 1.4em; background-color: rgb(255,255,255); list-style-type: decimal; margin: 0px 0px 1px; padding-left: 0px; padding-right: 0px; color: rgb(43,145,175); font-size: 1em; border-top: rgb(209,215,220) 1px solid; border-right: rgb(209,215,220) 1px solid; padding-top: 2px" class="dp-j"><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: black">ByteArrayOutputStream&nbsp;baos&nbsp;=&nbsp;</span><span style="color: rgb(127,0,85); font-weight: bold" class="keyword">new</span><span style="color: black">&nbsp;ByteArrayOutputStream();&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: rgb(0,130,0)" class="comment">//向OutPutStream中写入，如&nbsp;message.writeTo(baos);</span><span style="color: black">&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">String&nbsp;str&nbsp;=&nbsp;baos.toString(); &nbsp;</span></li></ol></div><br />
<p><span style="line-height: 18px; background-color: rgb(245,245,245); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px"><br /></span></p>
<p><span style="line-height: 18px; background-color: rgb(245,245,245); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px"><span style="line-height: 18px; font-family: Helvetica, Tahoma, Arial, sans-serif"></span></span></p>
<h3 style="padding-bottom: 0px; line-height: 1.5em; margin: 0px 0px 0.5em; padding-left: 0px; padding-right: 0px; color: black; font-size: 16px; padding-top: 10px"><a style="color: rgb(16,138,198); text-decoration: underline" href="http://haiker.iteye.com/blog/889800">将InputStream/OutputStream转换成string</a></h3><span style="line-height: 25px; font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px"></span>
<p>&nbsp;</p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">这里需要用到一个特殊的类ByteArrayOutputStream，利用他，我们可以将输出流在内存中直接转换成String类型。</p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">具体代码如下：</p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">首先从输入流中将数据读出来写入ByteArrayOutputStream,然后再将其转换成String.</p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">&nbsp;</p>
<div style="padding-bottom: 1px; overflow-x: auto; overflow-y: auto; background-color: transparent; padding-left: 1px; width: 694px; padding-right: 1px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; word-wrap: break-word; margin-left: 9px; font-size: 12px; word-break: break-all; padding-top: 1px" class="dp-highlighter">
<div class="bar">
<div style="text-align: left; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; color: black; font-weight: bold; padding-top: 3px" class="tools">Java代码&nbsp;&nbsp;<a style="color: rgb(16,138,198); text-decoration: underline" title="收藏这段代码" href="http://haiker.iteye.com/blog/889800"></a></div></div>
<ol style="border-bottom: rgb(209,215,220) 1px solid; border-left: rgb(209,215,220) 1px solid; padding-bottom: 2px; line-height: 1.4em; background-color: rgb(255,255,255); list-style-type: decimal; margin: 0px 0px 1px; padding-left: 0px; padding-right: 0px; color: rgb(43,145,175); font-size: 1em; border-top: rgb(209,215,220) 1px solid; border-right: rgb(209,215,220) 1px solid; padding-top: 2px" class="dp-j"><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: black">InputStream&nbsp;in&nbsp;=&nbsp;urlconn.getInputStream();</span><span style="color: rgb(0,130,0)" class="comment">//获取输入流</span><span style="color: black">&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">&nbsp;&nbsp;</span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">ByteArrayOutputStream&nbsp;bos&nbsp;=&nbsp;<span style="color: rgb(127,0,85); font-weight: bold" class="keyword">new</span><span style="color: black">&nbsp;ByteArrayOutputStream();&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">&nbsp;&nbsp;</span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: rgb(0,130,0)" class="comment">//读取缓存</span><span style="color: black">&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: rgb(127,0,85); font-weight: bold" class="keyword">byte</span><span style="color: black">[]&nbsp;buffer&nbsp;=&nbsp;</span><span style="color: rgb(127,0,85); font-weight: bold" class="keyword">new</span><span style="color: black">&nbsp;</span><span style="color: rgb(127,0,85); font-weight: bold" class="keyword">byte</span><span style="color: black">[</span><span style="color: rgb(192,0,0)" class="number">2048</span><span style="color: black">];&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: rgb(127,0,85); font-weight: bold" class="keyword">int</span><span style="color: black">&nbsp;length&nbsp;=&nbsp;</span><span style="color: rgb(192,0,0)" class="number">0</span><span style="color: black">;&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: rgb(127,0,85); font-weight: bold" class="keyword">while</span><span style="color: black">((length&nbsp;=&nbsp;in.read(buffer))&nbsp;!=&nbsp;-</span><span style="color: rgb(192,0,0)" class="number">1</span><span style="color: black">)&nbsp;{&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">&nbsp;&nbsp;&nbsp;&nbsp;bos.write(buffer,&nbsp;<span style="color: rgb(192,0,0)" class="number">0</span><span style="color: black">,&nbsp;length);</span><span style="color: rgb(0,130,0)" class="comment">//写入输出流</span><span style="color: black">&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">}&nbsp;&nbsp;</span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">in.close();<span style="color: rgb(0,130,0)" class="comment">//读取完毕，关闭输入流</span><span style="color: black">&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black">&nbsp;&nbsp;</span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: rgb(0,130,0)" class="comment">//&nbsp;根据输出流创建字符串对象</span><span style="color: black">&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: rgb(127,0,85); font-weight: bold" class="keyword">new</span><span style="color: black">&nbsp;String(bos.toByteArray(),&nbsp;</span><span style="color: blue" class="string">"UTF-8"</span><span style="color: black">);&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: rgb(0,130,0)" class="comment">//or</span><span style="color: black">&nbsp;&nbsp;</span></span></li><li style="border-left: rgb(209,215,220) 1px solid; padding-bottom: 0px; line-height: 18px; background-color: rgb(250,250,250); margin: 0px 0px 0px 38px; padding-left: 10px; padding-right: 0px; font-size: 1em; padding-top: 0px"><span style="color: black"><span style="color: rgb(0,130,0)" class="comment">//bos.toString("UTF-8");</span><span style="color: black">&nbsp;&nbsp;</span></span></li></ol></div>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-bottom: 0px; margin-top: 0px; margin-bottom: 0px; padding-top: 0px">根据同样的原理，我们可以将outputstream直接转换成String对象。</p><br />
<p><span style="line-height: 18px; background-color: rgb(245,245,245); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px"><br /></span></p>
<p><span style="line-height: 18px; background-color: rgb(245,245,245); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px"><span style="line-height: 23px; font-family: simsun; font-size: 14px">指定一下字符集<br />byte[] b = str.getBytes("utf-8");<br />String s = new String(b,"utf-8");</span><br /></span></p>
<p><span style="line-height: 18px; background-color: rgb(245,245,245); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px"><span style="line-height: 23px; font-family: simsun; font-size: 14px"><br /></span></span></p>
<p><span style="line-height: 18px; background-color: rgb(245,245,245); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px"><span style="line-height: 23px; font-family: simsun; font-size: 14px"><br /></span></span></p>
<p><span style="line-height: 18px; background-color: rgb(245,245,245); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px"><span style="line-height: 23px; font-family: simsun; font-size: 14px"><strong>OUTPUTSTREAM中方法WRITE用法</strong><br /></span></span></p>
<p><span style="line-height: 18px; background-color: rgb(245,245,245); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px"><span style="line-height: 23px; font-family: simsun; font-size: 14px"><strong><span style="line-height: 24px; background-color: rgb(255,252,246); font-family: arial, 宋体, sans-serif; font-size: 14px"></span></strong></span></span></p><pre style="padding-bottom: 0px; line-height: 22px; margin-top: 0px; padding-left: 0px; padding-right: 0px; zoom: 1; font-family: Arial; word-wrap: break-word; white-space: pre-wrap; margin-bottom: 10px; padding-top: 0px" id="best-answer-content" class="reply-text mb10" name="code"> void write(byte[] b) 
          将 b.length 个字节从指定的 byte 数组写入此输出流。 
 void write(byte[] b, int off, int len) 
          将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。 
abstract  void write(int b) 
          将指定的字节写入此输出流。 </pre>转载地址：<a href="http://blog.csdn.net/soundtravel/article/details/6927006">http://blog.csdn.net/soundtravel/article/details/6927006</a><br /> <img src ="http://www.blogjava.net/feng0801/aggbug/401464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feng0801/" target="_blank">冯威威</a> 2013-07-11 16:18 <a href="http://www.blogjava.net/feng0801/archive/2013/07/11/401464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>