JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 改行文字とは

改行文字

日本語 改行文字
英語 carriage return character、carriage return code
ふりがな かいぎょうもじ
フリガナ カイギョウモジ

解説

改行文字のこと。
文字列リテラル中に記述された「\r」もしくは「\n」のこと。エディタやコンソールは、この文字を見つけると改行する。明確には文字ではないため「改行コード」とも呼ぶ。
 
ファイルに出力する場合、改行文字は注意が必要である。
改行文字はOSに依存する。文字コードには依存せず、OS毎に異なる改行文字を採用している。
たとえば、Windowsであれば「\r\n」、つまり2文字改行の機能を持つ。OSの中には「\r」のみのものや、「\n」のみの場合もある。
 
ファイルへ書き込む際に「\r」や「\n」を直接記述すると、これらはそのまま記述されてしまう。
たとえば、文字出力ストリームクラスのwrite()メソッドに、"\r""\n"等の文字列リテラルとして渡すと、これらはそのまま文字出力ストリームへと出力される。
文字出力ストリームを使用してOSに適した改行文字を出力したい場合には、PrintWriterクラスprintln()メソッドを使用するのがいいだろう。
また、任意に改行文字を取得したい場合には、システムプロパティ「line.separator」から取得する。実時のOSの改行文字は、システムプロパティのひとつ「line.separator」を、SystemクラスのgetProperty()メソッドに渡すことで取得することができる。
 
とはいえ、改行文字は「OSに依存する」ため、インターネットでの受け渡し等を考えればOSに合わせて改行文字を変更することに大きな意味はないだろう。
むしろ読み込む側で改行文字が「\r」「\n」「\r\n」のどの場合でも対処できるようにした方がいいだろう。

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

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

// Sample.java
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.IOException;

public class Sample
{
    public static void main( String[] args )
    {
        // ※注:これはWindowsでのテストです。
        // Unix系だと結果が異なるので注意してください。

        // ファイルの絶対パス。
        // このファイルが作られて文字列が書き込まれ、さらにあとで読み込みます。
        String filePath = "D:/file.txt";

        // テキストファイルとして書き込みます。

        FileWriter fileWriter = null;
        PrintWriter printWriter = null;
        try
        {
            // FileWriterクラスを作ります。
            fileWriter = new FileWriter( filePath );
            // そのクラスを対象とするPrintWriterクラスを作ります。
            printWriter = new PrintWriter( fileWriter );
            // 出力します。
            printWriter.println( "あ\nい" );
            printWriter.print( "う" );
            // \nはそのまま\n(0x0A)が書き込まれます。
            // 対して、println()メソッドはOS固有の「改行文字」を出力します。
            // Windowsであれば、\r\n(0x0D,0x0A)に変換されて書き込まれます。
        }
        catch( IOException e )
        {
            // ファイルが無かった場合等に、この
            // IOException例外が投げられます。
            e.printStackTrace();
        }
        finally
        {
            if( printWriter != null )
            {
                printWriter.close();
            }

            try
            {
                if( fileWriter != null )
                {
                    fileWriter.close();
                }
            }
            catch( IOException e )
            {
                e.printStackTrace();
            }
        }

        // バイナリーファイルとして読み込みます。

        FileInputStream fileInputStream = null;
        try
        {
            // ファイルを読み込みます。
            fileInputStream = new FileInputStream( filePath );

            while( true )
            {
                // read()メソッドでファイルから1バイト取得します。
                int i = fileInputStream.read();
                if( i == -1 )
                {
                    // -1が来たら終了です。
                    break;
                }

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

            // Windowsの場合、文字コードがCP932です。
            // さらに改行コードが\r\nです。

            // 82   // 「あ」の前の1バイト(リードバイト)。
            // a0   // 「あ」の後ろ1バイト(トレイルバイト)。
            // a    // 「\n」。
            // 82   // 「い」の前の1バイト(リードバイト)。
            // a2   // 「い」の後ろ1バイト(トレイルバイト)。
            // d    // 「\r」。
            // a    // 「\n」。
            // 82   // 「う」の前の1バイト(リードバイト)。
            // a4   // 「う」の後ろ1バイト(トレイルバイト)。

            // このように、"\n"はそのまま出力されましたが、
            // println()メソッドはOS標準の改行文字を出力しました。
        }
        catch( IOException e )
        {
            // ファイルが無かった場合等に、この
            // IOException例外が投げられます。
            e.printStackTrace();
        }
        finally
        {
            try
            {
                if( fileInputStream != null )
                {
                    fileInputStream.close();
                }
            }
            catch( IOException e )
            {
                e.printStackTrace();
            }
        }

        // テキストファイルとして読み込みます。

        FileReader fileReader = null;
        BufferedReader bufferedReader = null;
        try
        {
            // ファイルを読み込みます。
            fileReader = new FileReader( filePath );
            bufferedReader = new BufferedReader( fileReader );

            while( true )
            {
                // 1行ずつ取得します。
                String string = bufferedReader.readLine();
                if( string == null )
                {
                    // nullの場合は最後まで来たということです。
                    break;
                }

                // 1行ずつ出力します。
                System.out.println( string );
            }

            // あ
            // い
            // う

            // このように、BufferedReaderクラスを使えば、改行コードに関わらず
            // 1行ずつ取得してくれます。
        }
        catch( IOException e )
        {
            // ファイルが無かった場合等に、この
            // IOException例外が投げられます。
            e.printStackTrace();
        }
        finally
        {
            try
            {
                if( bufferedReader != null )
                {
                    bufferedReader.close();
                }
            }
            catch( IOException e )
            {
                e.printStackTrace();
            }

            try
            {
                if( fileReader != null )
                {
                    fileReader.close();
                }
            }
            catch( IOException e )
            {
                e.printStackTrace();
            }
        }

        // OS固有の改行文字は、システムプロパティ"line.separator"で
        // 取得できます。
        String lineSeparator = System.getProperty( "line.separator" );
        System.out.print( "line.separator=" );
        char[] chars = lineSeparator.toCharArray();
        forint iF1 = 0; iF1 < chars.length; ++iF1 )
        {
            System.out.print( "0x" );
            System.out.print( Integer.toHexString( chars[iF1] ) );
            System.out.print( ", " );
        }
        System.out.println();
        // line.separator=0xd, 0xa, 
        // Windowsのため、0x0D(\r), 0x0A(\n)となります。
    }
}
// Sample.java
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.IOException;

public class Sample
{
    public static void main( String[] args )
    {
        // ※注:これはWindowsでのテストです。
        // Unix系だと結果が異なるので注意してください。

        // ファイルの絶対パス。
        // このファイルが作られて文字列が書き込まれ、さらにあとで読み込みます。
        String filePath = "D:/file.txt";

        // テキストファイルとして書き込みます。

        FileWriter fileWriter = null;
        PrintWriter printWriter = null;
        try
        {
            // FileWriterクラスを作ります。
            fileWriter = new FileWriter( filePath );
            // そのクラスを対象とするPrintWriterクラスを作ります。
            printWriter = new PrintWriter( fileWriter );
            // 出力します。
            printWriter.println( "あ\nい" );
            printWriter.print( "う" );
            // \nはそのまま\n(0x0A)が書き込まれます。
            // 対して、println()メソッドはOS固有の「改行文字」を出力します。
            // Windowsであれば、\r\n(0x0D,0x0A)に変換されて書き込まれます。
        }
        catch( IOException e )
        {
            // ファイルが無かった場合等に、この
            // IOException例外が投げられます。
            e.printStackTrace();
        }
        finally
        {
            if( printWriter != null )
            {
                printWriter.close();
            }

            try
            {
                if( fileWriter != null )
                {
                    fileWriter.close();
                }
            }
            catch( IOException e )
            {
                e.printStackTrace();
            }
        }

        // バイナリーファイルとして読み込みます。

        FileInputStream fileInputStream = null;
        try
        {
            // ファイルを読み込みます。
            fileInputStream = new FileInputStream( filePath );

            while( true )
            {
                // read()メソッドでファイルから1バイト取得します。
                int i = fileInputStream.read();
                if( i == -1 )
                {
                    // -1が来たら終了です。
                    break;
                }

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

            // Windowsの場合、文字コードがCP932です。
            // さらに改行コードが\r\nです。

            // 82   // 「あ」の前の1バイト(リードバイト)。
            // a0   // 「あ」の後ろ1バイト(トレイルバイト)。
            // a    // 「\n」。
            // 82   // 「い」の前の1バイト(リードバイト)。
            // a2   // 「い」の後ろ1バイト(トレイルバイト)。
            // d    // 「\r」。
            // a    // 「\n」。
            // 82   // 「う」の前の1バイト(リードバイト)。
            // a4   // 「う」の後ろ1バイト(トレイルバイト)。

            // このように、"\n"はそのまま出力されましたが、
            // println()メソッドはOS標準の改行文字を出力しました。
        }
        catch( IOException e )
        {
            // ファイルが無かった場合等に、この
            // IOException例外が投げられます。
            e.printStackTrace();
        }
        finally
        {
            try
            {
                if( fileInputStream != null )
                {
                    fileInputStream.close();
                }
            }
            catch( IOException e )
            {
                e.printStackTrace();
            }
        }

        // テキストファイルとして読み込みます。

        FileReader fileReader = null;
        BufferedReader bufferedReader = null;
        try
        {
            // ファイルを読み込みます。
            fileReader = new FileReader( filePath );
            bufferedReader = new BufferedReader( fileReader );

            while( true )
            {
                // 1行ずつ取得します。
                String string = bufferedReader.readLine();
                if( string == null )
                {
                    // nullの場合は最後まで来たということです。
                    break;
                }

                // 1行ずつ出力します。
                System.out.println( string );
            }

            // あ
            // い
            // う

            // このように、BufferedReaderクラスを使えば、改行コードに関わらず
            // 1行ずつ取得してくれます。
        }
        catch( IOException e )
        {
            // ファイルが無かった場合等に、この
            // IOException例外が投げられます。
            e.printStackTrace();
        }
        finally
        {
            try
            {
                if( bufferedReader != null )
                {
                    bufferedReader.close();
                }
            }
            catch( IOException e )
            {
                e.printStackTrace();
            }

            try
            {
                if( fileReader != null )
                {
                    fileReader.close();
                }
            }
            catch( IOException e )
            {
                e.printStackTrace();
            }
        }

        // OS固有の改行文字は、システムプロパティ"line.separator"で
        // 取得できます。
        String lineSeparator = System.getProperty( "line.separator" );
        System.out.print( "line.separator=" );
        char[] chars = lineSeparator.toCharArray();
        for( int iF1 = 0; iF1 < chars.length; ++iF1 )
        {
            System.out.print( "0x" );
            System.out.print( Integer.toHexString( chars[iF1] ) );
            System.out.print( ", " );
        }
        System.out.println();
        // line.separator=0xd, 0xa, 
        // Windowsのため、0x0D(\r), 0x0A(\n)となります。
    }
}

この単語を含むページ

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

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