JavaA2Z

KAB-studio > プログラミング > JavaA2Z > バイナリーファイルとは

バイナリーファイル

日本語 2進ファイル
英語 binary file
ふりがな ばいなりーふぁいる
フリガナ バイナリーファイル

解説

テキストファイル以外のファイル
ファイルの種類のひとつ。プログラム独自の形式でデータが書き込まれているファイル。そのため、そのプログラムで読み込むか、解析してそのファイルを読み解く必要がある。
実際には、「テキストファイル」の対となるファイル形式として使われ、テキストファイル以外のファイルは全てバイナリーファイルであると言える。
また、ファイルの入出力形式を指す場合もある。バイナリーファイル形式で入出力することで、ファイル中身をバイト単位で処理することができる。テキストファイルをバイナリーファイル形式で入出力することで、文字コードにとらわれない処理をすることができる。
 
JavaではFileInputStreamクラスFileOutputStreamクラス等のストリームクラスを用いて読み書きをう。

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

public class Sample
{
    public static void main( String[] args )
    {
        // 入力ファイルの絶対パス。
        // バイナリーファイルとして読み込むので文字コードとかは適当で。
        String inputFilePath = "D:/from.txt";
        // 出力ファイルの絶対パス。
        // ファイルは存在しなくても構いません。
        // というか存在すると上書きされます。
        String outputFilePath = "D:/to.txt";
        // FileReaderクラスとFileWriterクラスの参照型変数。
        // ここで作っておくのはfinallyでclose()メソッドを呼ぶためです。
        FileInputStream fileInputStream = null;
        FileOutputStream fileOutputStream = null;
        try
        {
            // まずFileReaderクラスを作ります。
            // このクラス経由でファイルから文字列を取得します。
            File inputFile = new File( inputFilePath );
            fileInputStream = new FileInputStream( inputFile );

            // 取得した文字列を格納するArrayListクラスを作ります。
            ArrayList arylst = new ArrayList();
            while( true )
            {
                // read()メソッドでファイルから1バイト取得します。
                int i = fileInputStream.read();
                if( i == -1 )
                {
                    // -1が来たら終了です。
                    break;
                }
                // 受け取ったデータを追加します。
                arylst.add( new Integer( i ) );

                // 16進数形式で出力します。
                System.out.println( Integer.toHexString( i ) );
            }

            // まずFileOutputStreamクラスを作ります。
            // このクラス経由でファイルへバイナリーデータを書き込みます。
            fileOutputStream = new FileOutputStream( outputFilePath );
            forint iF1 = 0; iF1 < arylst.size(); ++iF1 )
            {
                Integer integer = (Integer)arylst.get( iF1 );
                // write()メソッドでファイルに書き込みます。
                fileOutputStream.write( integer.intValue() );
            }
            // to.txtを確認してください。from.txtと同じデータが
            // 書き込まれているはずです。
        }
        catch( IOException e )
        {
            // ファイルが無かった場合等に、この
            // IOException例外が投げられます。
            e.printStackTrace();
        }
        finally
        {
            // ファイルを扱ったら、最後にclose()メソッドを呼んで
            // 後処理をします。また、これは必ず行うため、
            // finally内で行います。
            try
            {
                if( fileInputStream != null )
                {
                    fileInputStream.close();
                }
            }
            catch( IOException e )
            {
                // close()メソッドはIOExceptionがthrows指定されているので
                // 一応受け取ります。
                e.printStackTrace();
            }

            // 同じことをFileWriterの方にもします。
            try
            {
                if( fileOutputStream != null )
                {
                    fileOutputStream.close();
                }
            }
            catch( IOException e )
            {
                e.printStackTrace();
            }
        }
    }
}
// Sample.java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

public class Sample
{
    public static void main( String[] args )
    {
        // 入力ファイルの絶対パス。
        // バイナリーファイルとして読み込むので文字コードとかは適当で。
        String inputFilePath = "D:/from.txt";
        // 出力ファイルの絶対パス。
        // ファイルは存在しなくても構いません。
        // というか存在すると上書きされます。
        String outputFilePath = "D:/to.txt";
        // FileReaderクラスとFileWriterクラスの参照型変数。
        // ここで作っておくのはfinallyでclose()メソッドを呼ぶためです。
        FileInputStream fileInputStream = null;
        FileOutputStream fileOutputStream = null;
        try
        {
            // まずFileReaderクラスを作ります。
            // このクラス経由でファイルから文字列を取得します。
            File inputFile = new File( inputFilePath );
            fileInputStream = new FileInputStream( inputFile );

            // 取得した文字列を格納するArrayListクラスを作ります。
            ArrayList arylst = new ArrayList();
            while( true )
            {
                // read()メソッドでファイルから1バイト取得します。
                int i = fileInputStream.read();
                if( i == -1 )
                {
                    // -1が来たら終了です。
                    break;
                }
                // 受け取ったデータを追加します。
                arylst.add( new Integer( i ) );

                // 16進数形式で出力します。
                System.out.println( Integer.toHexString( i ) );
            }

            // まずFileOutputStreamクラスを作ります。
            // このクラス経由でファイルへバイナリーデータを書き込みます。
            fileOutputStream = new FileOutputStream( outputFilePath );
            for( int iF1 = 0; iF1 < arylst.size(); ++iF1 )
            {
                Integer integer = (Integer)arylst.get( iF1 );
                // write()メソッドでファイルに書き込みます。
                fileOutputStream.write( integer.intValue() );
            }
            // to.txtを確認してください。from.txtと同じデータが
            // 書き込まれているはずです。
        }
        catch( IOException e )
        {
            // ファイルが無かった場合等に、この
            // IOException例外が投げられます。
            e.printStackTrace();
        }
        finally
        {
            // ファイルを扱ったら、最後にclose()メソッドを呼んで
            // 後処理をします。また、これは必ず行うため、
            // finally内で行います。
            try
            {
                if( fileInputStream != null )
                {
                    fileInputStream.close();
                }
            }
            catch( IOException e )
            {
                // close()メソッドはIOExceptionがthrows指定されているので
                // 一応受け取ります。
                e.printStackTrace();
            }

            // 同じことをFileWriterの方にもします。
            try
            {
                if( fileOutputStream != null )
                {
                    fileOutputStream.close();
                }
            }
            catch( IOException e )
            {
                e.printStackTrace();
            }
        }
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/07/01
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。