OutputStream
日本語 | 出力流れ |
英語 | output stream |
ふりがな | あうとぷっとすとりーむ |
フリガナ | アウトプットストリーム |
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.io.OutputStream。
ストリームクラス。全てのバイト出力ストリームクラスのスーパークラス。
バイト出力ストリームクラスの中では「出力先」に位置する。
対になる入力側のクラスはInputStreamクラスである。
全てのバイト出力ストリームクラスのスーパークラス。
言い換えると、OutputStreamクラスのサブクラスはバイト出力ストリームクラスである、ということになる。
そういったスーパークラスとしての役目だけ持つため、このクラスを直接使用することはない。このクラスのサブクラスを使用するか、もしくはサブクラスを作成して使用する。
そもそも抽象クラスであるため、インスタンスを作成することはできない。
基本的には、「出力先」となるクラスはこのOutputStreamクラスのサブクラスとし、「中継ぎ」となるクラスはFilterutputStreamクラスのサブクラスとする。
OutputStreamクラスのサブクラスを作成する場合、まず「本当の出力先」を用意する。「本当の出力先」は、byte配列であったり、ファイルであったり、ソケットであったりする。そういった「一列に並べられたbyte型データ」を「本当の出力先」とする。
他のバイト出力ストリームクラスを「出力先」としてもいいが、それであればOutputStreamクラスではなくFileOutputStreamクラスのサブクラスとした方がいいだろう。
OutputStreamクラスは抽象クラスであり、write()メソッドが抽象メソッドであるため、サブクラスは必ずwrite()メソッドをオーバーライドする必要がある。
write()メソッドでは、「本当の出力先」へ1バイト出力するよう実装する。引数に渡されたint型のデータは、「バイトデータとしては同じ」になるようbyte型にキャストしてから出力する。つまり、渡された値がint型の255(0x000000FF)であれば、これをbyte型の-1(0xFF)に変換して出力する。write()メソッドはあくまで「バイトデータ」を出力するメソッドだからである。
OutputStreamクラスのその他のメソッドも、必要であればオーバーライドする。
特にclose()メソッドは「終了処理」を行うメソッドであり、ファイルやソケットといった、最後に「閉じる」処理が必要な「本当の出力先」の場合には必ずclose()メソッドをオーバーライドし、使用時にはfinallyで呼び出すようにする。
ストリームクラス。全てのバイト出力ストリームクラスのスーパークラス。
バイト出力ストリームクラスの中では「出力先」に位置する。
対になる入力側のクラスはInputStreamクラスである。
全てのバイト出力ストリームクラスのスーパークラス。
言い換えると、OutputStreamクラスのサブクラスはバイト出力ストリームクラスである、ということになる。
そういったスーパークラスとしての役目だけ持つため、このクラスを直接使用することはない。このクラスのサブクラスを使用するか、もしくはサブクラスを作成して使用する。
そもそも抽象クラスであるため、インスタンスを作成することはできない。
基本的には、「出力先」となるクラスはこのOutputStreamクラスのサブクラスとし、「中継ぎ」となるクラスはFilterutputStreamクラスのサブクラスとする。
OutputStreamクラスのサブクラスを作成する場合、まず「本当の出力先」を用意する。「本当の出力先」は、byte配列であったり、ファイルであったり、ソケットであったりする。そういった「一列に並べられたbyte型データ」を「本当の出力先」とする。
他のバイト出力ストリームクラスを「出力先」としてもいいが、それであればOutputStreamクラスではなくFileOutputStreamクラスのサブクラスとした方がいいだろう。
OutputStreamクラスは抽象クラスであり、write()メソッドが抽象メソッドであるため、サブクラスは必ずwrite()メソッドをオーバーライドする必要がある。
write()メソッドでは、「本当の出力先」へ1バイト出力するよう実装する。引数に渡されたint型のデータは、「バイトデータとしては同じ」になるようbyte型にキャストしてから出力する。つまり、渡された値がint型の255(0x000000FF)であれば、これをbyte型の-1(0xFF)に変換して出力する。write()メソッドはあくまで「バイトデータ」を出力するメソッドだからである。
OutputStreamクラスのその他のメソッドも、必要であればオーバーライドする。
特にclose()メソッドは「終了処理」を行うメソッドであり、ファイルやソケットといった、最後に「閉じる」処理が必要な「本当の出力先」の場合には必ずclose()メソッドをオーバーライドし、使用時にはfinallyで呼び出すようにする。
参考サイト
// Sample.java
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
NormalOutputStream normalOutputStream = null;
PrintStream printStream = null;
try
{
// NormalOutputStreamクラスを作ります。
// 本当の「入力元」はないので、単独で作ります。
normalOutputStream = new NormalOutputStream();
// このクラスを対象とするPrintStreamクラスを用意します。
printStream = new PrintStream( normalOutputStream );
// 出力します。
printStream.write( 1 );
printStream.write( 2 );
printStream.write( 3 );
// NormalOutputStream#write() : 1
// NormalOutputStream#write() : 2
// NormalOutputStream#write() : 3
// このように、printStreamのwrite()メソッドを呼ぶと、
// normalOutputStreamのwrite()メソッドを呼び出します。
}
finally
{
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
if( printStream != null )
{
printStream.close();
}
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( normalOutputStream != null )
{
normalOutputStream.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
}
}
}
/**
* NormalOutputStreamクラス。
* OutputStreamクラスのサブクラスです。
*/
class NormalOutputStream extends OutputStream
{
/**
* write()メソッド。
* このクラスを利用するバイト入力ストリームクラスの
* write()メソッドから呼び出されます。
*/
public void write( int b ) throws IOException
{
System.out.println( "NormalOutputStream#write() : " + b );
}
}
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.IOException;
public class Sample
{
public static void main( String[] args )
{
NormalOutputStream normalOutputStream = null;
PrintStream printStream = null;
try
{
// NormalOutputStreamクラスを作ります。
// 本当の「入力元」はないので、単独で作ります。
normalOutputStream = new NormalOutputStream();
// このクラスを対象とするPrintStreamクラスを用意します。
printStream = new PrintStream( normalOutputStream );
// 出力します。
printStream.write( 1 );
printStream.write( 2 );
printStream.write( 3 );
// NormalOutputStream#write() : 1
// NormalOutputStream#write() : 2
// NormalOutputStream#write() : 3
// このように、printStreamのwrite()メソッドを呼ぶと、
// normalOutputStreamのwrite()メソッドを呼び出します。
}
finally
{
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
if( printStream != null )
{
printStream.close();
}
// 処理が終わったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( normalOutputStream != null )
{
normalOutputStream.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
}
}
}
/**
* NormalOutputStreamクラス。
* OutputStreamクラスのサブクラスです。
*/
class NormalOutputStream extends OutputStream
{
/**
* write()メソッド。
* このクラスを利用するバイト入力ストリームクラスの
* write()メソッドから呼び出されます。
*/
public void write( int b ) throws IOException
{
System.out.println( "NormalOutputStream#write() : " + b );
}
}
// Sample.java import java.io.OutputStream; import java.io.PrintStream; import java.io.IOException; public class Sample { public static void main( String[] args ) { NormalOutputStream normalOutputStream = null; PrintStream printStream = null; try { // NormalOutputStreamクラスを作ります。 // 本当の「入力元」はないので、単独で作ります。 normalOutputStream = new NormalOutputStream(); // このクラスを対象とするPrintStreamクラスを用意します。 printStream = new PrintStream( normalOutputStream ); // 出力します。 printStream.write( 1 ); printStream.write( 2 ); printStream.write( 3 ); // NormalOutputStream#write() : 1 // NormalOutputStream#write() : 2 // NormalOutputStream#write() : 3 // このように、printStreamのwrite()メソッドを呼ぶと、 // normalOutputStreamのwrite()メソッドを呼び出します。 } finally { // 処理が終わったら、最後にclose()メソッドを呼んで // 後処理をします。また、これは必ず行うため、 // finally内で行います。 if( printStream != null ) { printStream.close(); } // 処理が終わったら、最後にclose()メソッドを呼んで // 後処理をします。また、これは必ず行うため、 // finally内で行います。 try { if( normalOutputStream != null ) { normalOutputStream.close(); } } catch( IOException e ) { // close()メソッドはIOExceptionがthrows指定されているので // 一応受け取ります。 e.printStackTrace(); } } } } /** * NormalOutputStreamクラス。 * OutputStreamクラスのサブクラスです。 */ class NormalOutputStream extends OutputStream { /** * write()メソッド。 * このクラスを利用するバイト入力ストリームクラスの * write()メソッドから呼び出されます。 */ public void write( int b ) throws IOException { System.out.println( "NormalOutputStream#write() : " + b ); } }
「みだし」に含まれているページ
「解説」に含まれているページ
- BufferedInputStream
- BufferedOutputStream
- ByteArrayInputStream
- ByteArrayOutputStream
- DataInputStream
- DataOutputStream
- FileInputStream
- FileOutputStream
- FileWriter
- FilterInputStream
- FilterOutputStream
- InputStream
- InputStreamReader
- ObjectInputStream
- ObjectOutputStream
- OutputStream
- OutputStreamWriter
- PipedInputStream
- PipedOutputStream
- PrintStream
- PrintWriter
- Rss4j
- Serializable
- ZIP
- クライアント
- サーバー
- ストリーム
- ソケット
- バイト入力ストリーム
- バイト出力ストリーム
- バイナリーファイル
- フラッシュ
- 文字ストリーム
- 文字出力ストリーム
「サンプルプログラムとか」に含まれているページ
- 127.0.0.1
- BufferedOutputStream
- BufferedWriter
- ByteArrayOutputStream
- DataInputStream
- DataOutputStream
- EOF
- EOFException
- FileOutputStream
- FilterOutputStream
- GET
- HEAD
- HTTP
- localhost
- ObjectInputStream
- ObjectOutputStream
- OutputStream
- OutputStreamWriter
- PipedInputStream
- PipedOutputStream
- POST
- PrintStream
- Serializable
- TCP
- transient
- クライアント
- クライアントサーバーシステム
- サーバー
- ステートレス
- ソケット
- バイト入力ストリーム
- バイト出力ストリーム
- バイナリーファイル
- リクエスト
- リクエストパラメーター
- リクエストヘッダー
- レスポンス
- レスポンスヘッダー
- 直列化