/* From http://java.sun.com/docs/books/tutorial/index.html */ 
/* 
 * Copyright (c) 1995-1998 Sun Microsystems, Inc. All Rights Reserved. 
 *  
 * Permission to use, copy, modify, and distribute this software and its 
 * documentation for NON-COMMERCIAL purposes and without fee is hereby granted 
 * provided that this copyright notice appears in all copies. Please refer to 
 * the file "copyright.html" for further important copyright and licensing 
 * information. 
 *  
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE 
 * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 
 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR 
 * NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY 
 * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS 
 * DERIVATIVES. 
 */ 
 
import java.awt.Font; 
import java.awt.FontMetrics; 
import java.awt.Frame; 
import java.awt.Graphics; 
import java.awt.Insets; 
import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.io.Reader; 
import java.io.Writer; 
 
public class StreamConverter { 
 
  static void writeOutput(String str) { 
 
    try { 
      FileOutputStream fos = new FileOutputStream("test.txt"); 
      Writer out = new OutputStreamWriter(fos, "UTF8"); 
      out.write(str); 
      out.close(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
  } 
 
  static String readInput() { 
 
    StringBuffer buffer = new StringBuffer(); 
    try { 
      FileInputStream fis = new FileInputStream("test.txt"); 
      InputStreamReader isr = new InputStreamReader(fis, "UTF8"); 
      Reader in = new BufferedReader(isr); 
      int ch; 
      while ((ch = in.read()) > -1) { 
        buffer.append((char) ch); 
      } 
      in.close(); 
      return buffer.toString(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
      return null; 
    } 
  } 
 
  public static void main(String[] args) { 
 
    String jaString = new String("\u65e5\u672c\u8a9e\u6587\u5b57\u5217"); 
 
    writeOutput(jaString); 
    String inputString = readInput(); 
    String displayString = jaString + " " + inputString; 
    new ShowString(displayString, "Conversion Demo"); 
  } 
 
} 
 
class ShowString extends Frame { 
 
  FontMetrics fontM; 
 
  String outString; 
 
  ShowString(String target, String title) { 
 
    setTitle(title); 
    outString = target; 
 
    Font font = new Font("Monospaced", Font.PLAIN, 36); 
    fontM = getFontMetrics(font); 
    setFont(font); 
 
    int size = 0; 
    for (int i = 0; i < outString.length(); i++) { 
      size += fontM.charWidth(outString.charAt(i)); 
    } 
    size += 24; 
 
    setSize(size, fontM.getHeight() + 60); 
    setLocation(getSize().width / 2, getSize().height / 2); 
    show(); 
  } 
 
  public void paint(Graphics g) { 
    Insets insets = getInsets(); 
    int x = insets.left; 
    int y = insets.top; 
    g.drawString(outString, x + 6, y + fontM.getAscent() + 14); 
  } 
} 
 
 
 
            
          
     
     
     
     
  
  |