Smart CODE
生成済みコードに関するオンラインガイド

入力ストリームと出力ストリーム

C および C++ の InputStream および OutputStream ソフトウェアは、インターネットリソースにアクセスする必要のある thin クライアントインタフェースおよびアプリケーションのために開発されています。従来、Java への移行を容易にするため、またすべてのターゲット間で共通の API を保持するために、Java(TM) java.io クラスをモデルにしてきました。

C と C++ の実装は、この目的に合っており、インタフェースに書き込まれたものは、簡単に Java に移行できます。ただしこれは、Java API の完全な実装ではなく、Java アプリケーションを C でコーディングし直すためのものではありません。

言語の相違点の概要
言語 使用法 コメント
Java
     import java.io.*;

     void myinput( InputStream i)
     {
        DataInputStream d = new DataInputStream( i);
        String s;
        while (( s = d.readLine()) != nil)
                System.out.println(s);
     }

     void myoutput( OutputStream o)
     {
        PrintWriter pw = new PrintWriter( o);
        pw.println("Hallo World");
     }
  • DataInputStream readLine メソッドは、JDK1.0 以降では使用されなくなった。 
  • C++
         #include "Ustreams.h"
    
         void
         myclass::myinput( InputStream * i)
         {
            DataInputStream * d = new DataInputStream( i);
            char * s;
    
            while ((s = d->readLine()) != (char*)0)
                    printf("%s\n", s);
    
            delete d;
         }
    
         void
         myclass::myoutput( OutputStream * o)
         {
            PrintWriter * pw = new PrintWriter( o);
            pw->println( "Hallo World");
    
            delete pw;
         }
  • オブジェクトはポインタ

  • (URL * u および u->openStream()) 
  • 削除する必要がある。収集された不要データではない。 
  • C
         #include "Ustreams.h"
    
         void
         myinput( InputStream * i)
         {
            DataInputStream * d = newDataInputStream(i);
            char * s;
    
            while ((s = (*d->readLine)( d)) != (char*)0)
                    printf("%s\n", s);
    
            (*d->delete)( d);
         }
    
         void
         myoutput( OutputStream * o)
         {
            PrintWriter * pw = newPrintWriter( o);
    
            (*o->println)( o,"Hallo World");
    
            (*o->delete) ( o);
         }
  • オブジェクトはポインタ

  • (URL * u) 
  • コンストラクタは newType() 書式の関数 
  • 公開メソッドはオブジェクト内の関数ポインタ。 オブジェクト自体が次の例のように呼び出しの第 1 引数でなければならない。

  • (*d->delete)( d); 
  • 削除する必要がある。収集された不要データではない。 
  • 入力ストリームおよび出力ストリームの同様の例に、上記の例でデータが処理される方法を示しています。

    形式

    #include <Ustreams.h>
    
    
    InputStream (abstract)
    (StdInputStream)
    FileInputStream
    BufferedInputStream
    DataInputStream
    InputData
    OutputStream (abstract)
    (StdOutputStream)
    FileOutputStream
    TempFileOutputStream
    BufferedOutputStream
    PrintWriter

    説明

    BufferedInputStream

    BufferedInputStream は、入力バッファを満たす大量読み取りを使用して、入力ストリームにアクセスします。デフォルトのバッファサイズは 5012 バイトです。バッファサイズとして指定された容量が実際にはディスク上に確保されます。
    コンストラクタ
    C++
     
    C
    BufferedInputStream *
    newBufferedInputStreamSized( InputStream * i, int bufsize)
    
    BufferedInputStream *
    newBufferedInputStream( InputStream * i)
    公開メソッド
  • close 
  • read/readChar 
  • skip
  • BufferedInputStream は、DataInputStreamInputData によって内部的に使用されます。 

    BufferedOutputStream

    BufferedOutputStream を使用すると、バッファが満杯になったときや、明示的に flush() メソッドを呼び出したときに、出力ファイル記述子にフラッシュする出力バッファに書き込むことができます。
    コンストラクタ
    C++
     
    C
    BufferedOutputStream *
    newBufferedOutputStreamSized( OutputStream * o, int bufsize)
    
    BufferedOutputStream *
    newBufferedOutputStream( OutputStream * o)
    公開メソッド
  • close 
  • flush 
  • write
  • DataInputStream

    DataInputStream は Java の DataInputStream のスタブバージョンで、単一の readLine() メソッドを提供します。DataInputStream の全機能を実装する必要のあるアプリケーションが開始ポイントとしてこれを採用することもできます。
    コンストラクタ
    C++
     
    C
    DataInputStream *
    newDataInputStream( InputStream * i)
    公開メソッド
  • readLine
  • FileInputStream

    FileInputStream は、読み取り処理のためにディスクファイルのストリームを開きます。
    コンストラクタ
    C++
     
    C
    FileInputStream *
    newFileInputStream( char * filename)
    公開メソッド
  • close 
  • read/readChar 
  • skip
  • FileOutputStream

    FileOutputStream は、ディスクファイルに書き込むためにストリームを開きます。デフォルトでは、既存のファイルを切り捨てて、上書きします。既存ファイルに追加したり、ランダムアクセス (読み取りおよび書き込み) ストリームを提供するように構成することができます。
    コンストラクタ
    C++
     
    C
    FileOutputStream *
    newFileOutputStreamFull( char * f, int a, int rw)
    
    FileOutputStream *
    newFileOutputStream( char * f)
    公開メソッド
  • close 
  • flush 
  • write
  • InputData

    InputData公開クラスの 1 つで、Java にはこれに相当するものがありません。InputData は、適切なサイズのバッファにストリームを完全に読み込み、それをデータポインタとしてハンドラに渡すことができます。
    コンストラクタ
    C++
     
    C
    InputData *
    newInputData( InputStream* i)
    公開メソッド
  • getData() 

  • C バージョン: getData(InputData*)
  • getSize() 

  • C バージョン: getData(InputData*)

    InputStream

    InputStream は、一次入力メソッド用のインタフェースを定義する抽象クラスです。
  • int available()

  • ストリームに読み取るデータが残っている場合、ゼロ以外を返します。
    C バージョン: available(InputStream*)
  • void close()

  • ストリームを閉じます。
    C バージョン: close(InputStream*)
  • int read()

  • ストリームから文字を読み取ります。
    C バージョン: readChar(InputStream*)
  • int read( char * buf, int size)

  • ストリームから bufsize のバイト数だけ読み取ります。
    C バージョン: read(InputStream*, char*, int)
  • void skip( int count)

  • ストリームで count のバイト数だけスキップします。
    C バージョン: skip(InputStream*, int)

    OutputStream

    OutputStream は、一次出力メソッド用のインタフェースを定義する抽象クラスです。
  • void close()

  • ストリームを閉じます。
    C バージョン: close( OutputStream*)
  • void flush()

  • ストリームをフラッシュします (バッファに書き込んだ後)
    C バージョン: flush( OutputStream*)
  • int write ( char * buf, int len)

  • buf から出力ストリームに len のバイト数だけ書き込みます。
    C バージョン: write( OutputStream*, char *, int)

    StdInputStream

    StdInputStream は、ファイル記述子 (標準) I/O として InputStream (抽象) を実現する内部クラスです。
    コンストラクタ
    C++
     
    C
    StdInputStream *
    newStdInputStream( int i)
    
    StdInputStream *
    newStdInputStream_anon()
    公開メソッド
  • close 
  • read/readChar 
  • skip
  • StdOutputStream

    StdOutputStream は、ファイル記述子 (標準) I/O として OutputStream (抽象) を実現する内部クラスです。
    コンストラクタ
    C++
     
    C
    StdOutputStream *
    newStdOutputStream( int i)
    
    StdOutputStream *
    newStdOutputStream_anon()
    公開メソッド
  • close 
  • flush 
  • write
  • TempFileOutputStream

    TempFileOutputStream は、ユーザーが HTTP OutputStream を閉じるまで、これをローカルに保存するために使用される内部クラスです。TempFileOutputStream は、コンテンツ長が確認できるまで、サーバーには送信されません。
    コンストラクタ
    C++
     
    C
    TempFileOutputStream *
    newTempFileOutputStream()
    公開メソッド
  • close 
  • flush 
  • write 
  • copy
  • PrintWriter

    PrintWriter は、Java の PrintWriter クラスのスタブバージョンで、グループデータをサーバーと送受信する前に文字列直列化を行うために使用します。
    コンストラクタ
    C++
     
    C
    PrintWriter *
    newPrintWriter( OutputStream * o)
    公開メソッド
  • println 
  • print 
  • (C のみ) printlnInt
  • 関連項目

    URL