ByteArrayDataSource.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:4k
源码类别:

Java编程

开发平台:

Java

  1. /*
  2.  * @(#)ByteArrayDataSource.java 1.4 01/05/23
  3.  *
  4.  * Copyright 1998-2000 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Redistribution and use in source and binary forms, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  * 
  10.  * - Redistributions of source code must retain the above copyright
  11.  *   notice, this list of conditions and the following disclaimer.
  12.  * 
  13.  * - Redistribution in binary form must reproduce the above copyright
  14.  *   notice, this list of conditions and the following disclaimer in the
  15.  *   documentation and/or other materials provided with the distribution.
  16.  * 
  17.  * Neither the name of Sun Microsystems, Inc. or the names of contributors
  18.  * may be used to endorse or promote products derived from this software
  19.  * without specific prior written permission.
  20.  * 
  21.  * This software is provided "AS IS," without a warranty of any kind. ALL
  22.  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
  23.  * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
  24.  * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND
  25.  * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES OR LIABILITIES
  26.  * SUFFERED BY LICENSEE AS A RESULT OF  OR RELATING TO USE, MODIFICATION
  27.  * OR DISTRIBUTION OF THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
  28.  * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
  29.  * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
  30.  * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
  31.  * ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS
  32.  * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  33.  * 
  34.  * You acknowledge that Software is not designed, licensed or intended
  35.  * for use in the design, construction, operation or maintenance of any
  36.  * nuclear facility.
  37.  */
  38. import java.io.*;
  39. import javax.activation.*;
  40. /**
  41.  * A simple DataSource for demonstration purposes.
  42.  * This class implements a DataSource from:
  43.  *  an InputStream
  44.  * a byte array
  45.  *  a String
  46.  *
  47.  * @author John Mani
  48.  * @author Bill Shannon
  49.  * @author Max Spivak
  50.  */
  51. public class ByteArrayDataSource implements DataSource {
  52.     private byte[] data; // data
  53.     private String type; // content-type
  54.     /* Create a DataSource from an input stream */
  55.     public ByteArrayDataSource(InputStream is, String type) {
  56.         this.type = type;
  57.         try { 
  58.             ByteArrayOutputStream os = new ByteArrayOutputStream();
  59.     int ch;
  60.     while ((ch = is.read()) != -1)
  61.                 // XXX - must be made more efficient by
  62.         // doing buffered reads, rather than one byte reads
  63.         os.write(ch);
  64.     data = os.toByteArray();
  65.         } catch (IOException ioex) { }
  66.     }
  67.     /* Create a DataSource from a byte array */
  68.     public ByteArrayDataSource(byte[] data, String type) {
  69.         this.data = data;
  70. this.type = type;
  71.     }
  72.     /* Create a DataSource from a String */
  73.     public ByteArrayDataSource(String data, String type) {
  74. try {
  75.     // Assumption that the string contains only ASCII
  76.     // characters!  Otherwise just pass a charset into this
  77.     // constructor and use it in getBytes()
  78.     this.data = data.getBytes("iso-8859-1");
  79. } catch (UnsupportedEncodingException uex) { }
  80. this.type = type;
  81.     }
  82.     /**
  83.      * Return an InputStream for the data.
  84.      * Note - a new stream must be returned each time.
  85.      */
  86.     public InputStream getInputStream() throws IOException {
  87. if (data == null)
  88.     throw new IOException("no data");
  89. return new ByteArrayInputStream(data);
  90.     }
  91.     public OutputStream getOutputStream() throws IOException {
  92. throw new IOException("cannot do this");
  93.     }
  94.     public String getContentType() {
  95.         return type;
  96.     }
  97.     public String getName() {
  98.         return "dummy";
  99.     }
  100. }