EOFException
日本語 | 書類末端例外 |
英語 | End Of File exception |
ふりがな | えんどおぶふぁいるえくせぷしょん |
フリガナ | エンドオブファイルエクセプション |
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.io.EOFException。
例外の一種。
DataInputStreamクラスを用いてファイルを入力する際に、「EOF」、つまりファイルの末端まで来た場合に投げられる。
他の入力系ストリームクラスの場合、ファイルの末端は戻り値として返されるため、EOFExceptionクラスは投げられない。そのため拾う機会は少ないだろう。
例外の一種。
DataInputStreamクラスを用いてファイルを入力する際に、「EOF」、つまりファイルの末端まで来た場合に投げられる。
他の入力系ストリームクラスの場合、ファイルの末端は戻り値として返されるため、EOFExceptionクラスは投げられない。そのため拾う機会は少ないだろう。
// Sample.java
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.EOFException;
public class Sample
{
public static void main( String[] args )
{
// 入出力ファイルの絶対パス。
String filePath = "D:/sample.data";
// まずは出力。
// FileOutputStreamクラスとDataOutputStreamクラスの参照型変数。
// ここで作っておくのはfinallyでclose()メソッドを呼ぶためです。
FileOutputStream fileOutputStream = null;
DataOutputStream dataOutputStream = null;
try
{
// ストリームを開きます。
fileOutputStream = new FileOutputStream( filePath );
dataOutputStream = new DataOutputStream( fileOutputStream );
// ストリームを通して、データを書き込みます。
dataOutputStream.writeInt( 100 );
dataOutputStream.writeUTF( "あいうえお" );
dataOutputStream.writeInt( 200);
// こうして、ファイルにデータが書き込まれました。
// このデータは一種のバイナリーファイルになります。
}
catch( IOException e )
{
// ファイルが無かった場合等に、この
// IOException例外が投げられます。
e.printStackTrace();
}
finally
{
// ファイルを扱ったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( dataOutputStream != null )
{
dataOutputStream.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
try
{
if( fileOutputStream != null )
{
fileOutputStream.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
}
// ここから入力。
// FileInputStreamクラスとDataInputStreamクラスの参照型変数。
// ここで作っておくのはfinallyでclose()メソッドを呼ぶためです。
FileInputStream fileInputStream = null;
DataInputStream dataInputStream = null;
try
{
// ストリームを開きます。
fileInputStream = new FileInputStream( filePath );
dataInputStream = new DataInputStream( fileInputStream );
try
{
// データを読み込みます。
int i1 = dataInputStream.readInt();
String string = dataInputStream.readUTF();
int i2 = dataInputStream.readInt();
System.out.println( i1 );
System.out.println( string );
System.out.println( i2 );
// 100
// あいうえお
// 200
// 最後まで来てるのに読み込もうとすると、
// EOFException例外が投げられます。
char ch = dataInputStream.readChar();
}
catch( EOFException e )
{
System.out.println( "ファイルの最後まで来ました。" );
// このように、ファイルの最後に来ると
// EOFExceptionが投げられます。
// 他のストリームの場合、戻り値に「ファイルの最後まで来た」
// ことを示す値が返されるのですが、DataInputStreamクラスの
// 場合、プリミティブ型を返すのでそれができません。
// そのため、代わりにEOFException例外を投げるのです。
// 設計的に、いいとは言えませんが……。
}
}
catch( IOException e )
{
// ファイルが無かった場合等に、この
// IOException例外が投げられます。
e.printStackTrace();
}
finally
{
// ファイルを扱ったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( dataInputStream != null )
{
dataInputStream.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
try
{
if( fileInputStream != null )
{
fileInputStream.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
}
}
}
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.EOFException;
public class Sample
{
public static void main( String[] args )
{
// 入出力ファイルの絶対パス。
String filePath = "D:/sample.data";
// まずは出力。
// FileOutputStreamクラスとDataOutputStreamクラスの参照型変数。
// ここで作っておくのはfinallyでclose()メソッドを呼ぶためです。
FileOutputStream fileOutputStream = null;
DataOutputStream dataOutputStream = null;
try
{
// ストリームを開きます。
fileOutputStream = new FileOutputStream( filePath );
dataOutputStream = new DataOutputStream( fileOutputStream );
// ストリームを通して、データを書き込みます。
dataOutputStream.writeInt( 100 );
dataOutputStream.writeUTF( "あいうえお" );
dataOutputStream.writeInt( 200);
// こうして、ファイルにデータが書き込まれました。
// このデータは一種のバイナリーファイルになります。
}
catch( IOException e )
{
// ファイルが無かった場合等に、この
// IOException例外が投げられます。
e.printStackTrace();
}
finally
{
// ファイルを扱ったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( dataOutputStream != null )
{
dataOutputStream.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
try
{
if( fileOutputStream != null )
{
fileOutputStream.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
}
// ここから入力。
// FileInputStreamクラスとDataInputStreamクラスの参照型変数。
// ここで作っておくのはfinallyでclose()メソッドを呼ぶためです。
FileInputStream fileInputStream = null;
DataInputStream dataInputStream = null;
try
{
// ストリームを開きます。
fileInputStream = new FileInputStream( filePath );
dataInputStream = new DataInputStream( fileInputStream );
try
{
// データを読み込みます。
int i1 = dataInputStream.readInt();
String string = dataInputStream.readUTF();
int i2 = dataInputStream.readInt();
System.out.println( i1 );
System.out.println( string );
System.out.println( i2 );
// 100
// あいうえお
// 200
// 最後まで来てるのに読み込もうとすると、
// EOFException例外が投げられます。
char ch = dataInputStream.readChar();
}
catch( EOFException e )
{
System.out.println( "ファイルの最後まで来ました。" );
// このように、ファイルの最後に来ると
// EOFExceptionが投げられます。
// 他のストリームの場合、戻り値に「ファイルの最後まで来た」
// ことを示す値が返されるのですが、DataInputStreamクラスの
// 場合、プリミティブ型を返すのでそれができません。
// そのため、代わりにEOFException例外を投げるのです。
// 設計的に、いいとは言えませんが……。
}
}
catch( IOException e )
{
// ファイルが無かった場合等に、この
// IOException例外が投げられます。
e.printStackTrace();
}
finally
{
// ファイルを扱ったら、最後にclose()メソッドを呼んで
// 後処理をします。また、これは必ず行うため、
// finally内で行います。
try
{
if( dataInputStream != null )
{
dataInputStream.close();
}
}
catch( IOException e )
{
// close()メソッドはIOExceptionがthrows指定されているので
// 一応受け取ります。
e.printStackTrace();
}
try
{
if( fileInputStream != null )
{
fileInputStream.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
}
}
}
// Sample.java import java.io.DataOutputStream; import java.io.FileOutputStream; import java.io.DataInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.EOFException; public class Sample { public static void main( String[] args ) { // 入出力ファイルの絶対パス。 String filePath = "D:/sample.data"; // まずは出力。 // FileOutputStreamクラスとDataOutputStreamクラスの参照型変数。 // ここで作っておくのはfinallyでclose()メソッドを呼ぶためです。 FileOutputStream fileOutputStream = null; DataOutputStream dataOutputStream = null; try { // ストリームを開きます。 fileOutputStream = new FileOutputStream( filePath ); dataOutputStream = new DataOutputStream( fileOutputStream ); // ストリームを通して、データを書き込みます。 dataOutputStream.writeInt( 100 ); dataOutputStream.writeUTF( "あいうえお" ); dataOutputStream.writeInt( 200); // こうして、ファイルにデータが書き込まれました。 // このデータは一種のバイナリーファイルになります。 } catch( IOException e ) { // ファイルが無かった場合等に、この // IOException例外が投げられます。 e.printStackTrace(); } finally { // ファイルを扱ったら、最後にclose()メソッドを呼んで // 後処理をします。また、これは必ず行うため、 // finally内で行います。 try { if( dataOutputStream != null ) { dataOutputStream.close(); } } catch( IOException e ) { // close()メソッドはIOExceptionがthrows指定されているので // 一応受け取ります。 e.printStackTrace(); } try { if( fileOutputStream != null ) { fileOutputStream.close(); } } catch( IOException e ) { e.printStackTrace(); } } // ここから入力。 // FileInputStreamクラスとDataInputStreamクラスの参照型変数。 // ここで作っておくのはfinallyでclose()メソッドを呼ぶためです。 FileInputStream fileInputStream = null; DataInputStream dataInputStream = null; try { // ストリームを開きます。 fileInputStream = new FileInputStream( filePath ); dataInputStream = new DataInputStream( fileInputStream ); try { // データを読み込みます。 int i1 = dataInputStream.readInt(); String string = dataInputStream.readUTF(); int i2 = dataInputStream.readInt(); System.out.println( i1 ); System.out.println( string ); System.out.println( i2 ); // 100 // あいうえお // 200 // 最後まで来てるのに読み込もうとすると、 // EOFException例外が投げられます。 char ch = dataInputStream.readChar(); } catch( EOFException e ) { System.out.println( "ファイルの最後まで来ました。" ); // このように、ファイルの最後に来ると // EOFExceptionが投げられます。 // 他のストリームの場合、戻り値に「ファイルの最後まで来た」 // ことを示す値が返されるのですが、DataInputStreamクラスの // 場合、プリミティブ型を返すのでそれができません。 // そのため、代わりにEOFException例外を投げるのです。 // 設計的に、いいとは言えませんが……。 } } catch( IOException e ) { // ファイルが無かった場合等に、この // IOException例外が投げられます。 e.printStackTrace(); } finally { // ファイルを扱ったら、最後にclose()メソッドを呼んで // 後処理をします。また、これは必ず行うため、 // finally内で行います。 try { if( dataInputStream != null ) { dataInputStream.close(); } } catch( IOException e ) { // close()メソッドはIOExceptionがthrows指定されているので // 一応受け取ります。 e.printStackTrace(); } try { if( fileInputStream != null ) { fileInputStream.close(); } } catch( IOException e ) { e.printStackTrace(); } } } }