JAva IOのapiノート


InputStream  OutputStreamバイト入出力ストリームの抽象ベースクラス
Reader Writer  文字入出力ストリームの抽象ベースクラス
InputStreamReader OutputStreamWriterバイトが文字ストリームのブリッジに流れ、符号化方法を指定できます
DataInputStream DataOutputStream入出力基本タイプ
主な方法は
readBoolean() writeBoolean(boolean v)
BufferedReader BufferedWriterバッファ付き文字入出力ストリーム

   while((s=br.readLine())!=null)
   {
        bw.write(s,0,s.length());
    }

PrintWriterフォーマット出力、一部の機能はDataOutputStreamに似ています
PrintWriter(File file)
          指定したファイルを使用して、自動行リフレッシュを使用しない新しいPrintWriterを作成します.
PrintWriter(File file, String csn)
          指定したファイルと文字セットがあり、オートブラシなしで新しいPrintWriterを作成します.
PrintWriter(OutputStream out)
          既存のOutputStreamに基づいて、自動行リフレッシュなしの新しいPrintWriterを作成します.
PrintWriter(OutputStream out, boolean autoFlush)
          既存のOutputStreamから新しいPrintWriterを作成します.
PrintWriter(String fileName)
          指定したファイル名を持ち、自動行リフレッシュなしの新しいPrintWriterを作成します.
PrintWriter(String fileName, String csn)
          指定したファイル名と文字セットがあり、自動行リフレッシュなしの新しいPrintWriterを作成します.
PrintWriter(Writer out)
          自動行リフレッシュなしで新しいPrintWriterを作成します.
PrintWriter(Writer out, boolean autoFlush)
          新しいPrintWriterを作成します.
Scannerは、正規表現を使用して、基本タイプと文字列の単純なテキストスキャナを解析できます.

String input = "1 fish 2 fish red fish blue fish";
     Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
     System.out.println(s.nextInt());
     System.out.println(s.nextInt());
     System.out.println(s.next());
     System.out.println(s.next());
     s.close(); 




String input = "1 fish 2 fish red fish blue fish";
     Scanner s = new Scanner(input);
     s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
     MatchResult result = s.match();
     for (int i=1; i<=result.groupCount(); i++)
         System.out.println(result.group(i);
     s.close(); 


JavaのIOストリームの中で1種のとても特殊なストリームがパイプストリームクラスです:PipedInputStream     PipedOutputStream.この2つのクラスのインスタンスオブジェクトはconnectメソッドで接続する必要があります.  
   
  実はこのようなプログラムを見てパイプフロークラスの使用方法を知った.  
   

  //sender.java   
    
  import   java.io.*;   
  import   java.util.*;   
  public   class   sender   extends   Thread   
  {   
                PipedOutputStream   out   =   new   PipedOutputStream();   
                public   PipedOutputStream   getOut()   
                  {   
                          return   out;   
                }   
                public   void   run()   
                {   
                          String   str   =   "Hello,receiver   !   I`m   sender
"; try { out.write(str.getBytes()); out.close(); } catch(Exception e) { e.printStackTrace(); } } } //receiver.java import java.io.*; import java.util.*; public class receiver extends Thread { PipedInputStream in = new PipedInputStream(); public PipedInputStream getIn() { return in; } public void run() { byte [] buf = new byte[1024]; try { int len = in.read(buf); System.out.println("the following is from sender:
"+new String(buf,0,len)); in.close(); }catch(Exception e) { e.printStackTrace(); } } } //TestPiped.java import java.io.*; class TestPiped { public static void main(String [] args) { sender s = new sender(); receiver r = new receiver(); PipedOutputStream out = s.getOut(); PipedInputStream in = r.getIn(); try { in.connect(out); s.start(); r.start(); } catch(Exception e) { e.printStackTrace(); } } }

   
  このプログラムの機能はsender送信"Hello,receiver   !   I`m   senderはreceiverに受信して表示し、前に「the」を追加します.   following   is   from   senderの情報.PipedInputStreamとPipedOutputStreamはそれぞれ2つのスレッドでデータを転送することに注意する.