Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

fopen

ファイルを開くまたは開いているファイルに関する情報の取得

説明

fileID = fopen(filename) は、バイナリ読み取りアクセス用にファイル filename を開き、3 以上の整数のファイル識別子を返します。MATLAB® は、ファイル識別子 01 および 2 をそれぞれ、標準入力、標準出力 (画面) および標準エラー用に予約しています。

fopen でファイルを開けない場合、fileID-1 となります。

fileID = fopen(filename,permission) は、permission で指定されたアクセスのタイプでファイルを開きます。

fileID = fopen(filename,permission,machinefmt,encodingIn) はさらに machinefmt 引数を使用して、ファイル内のバイトまたはビットの読み取りまたは書き込みの順序を指定します。オプションの encodingIn 引数は、ファイルに関連付けられた文字エンコード スキームを指定します。

[fileID,errmsg] = fopen(___) は、fopen でファイルのオープンに失敗した場合、システム依存エラー メッセージを追加で返します。それ以外の場合、errmsg は空の文字ベクトルになります。この構文では、前述の構文の入力引数のいずれかを使用できます。

fIDs = fopen('all') は、開いているすべてのファイルのファイル識別子を含む行ベクトルを返します。標準の入力、出力およびエラー用に予約された識別子は含まれません。ベクトルの要素の数は、開いているファイルの数と同じになります。

filename = fopen(fileID) は、fopen の以前の呼び出しで fileID で指定されたファイルを開いたときに使用したファイル名を返します。出力ファイル名は絶対パスに解決されます。関数 fopen が出力値を特定するために、ファイルから情報を読み取ることはありません。

[filename,permission,machinefmt,encodingOut] = fopen(fileID) は、fopen の以前の呼び出しで指定されたファイルを開いたときに使用した権限、マシン形式およびエンコードを追加で返します。ファイルをバイナリ モードで開いた場合、permission には文字 'b' が含まれます。encodingOut 出力は標準エンコード スキーム名です。fopen がこれらの出力値を特定するために、ファイルから情報を読み取ることはありません。fileID が無効な場合、すべての出力引数に対して空の文字ベクトルが返されます。

すべて折りたたむ

ファイルを開き、データを読み取るためにファイル識別子を関数 fgetl に渡します。

ファイル tsunamis.txt を開き、ファイル識別子を取得します。

fileID = fopen('tsunamis.txt');

fileID を関数 fgetl に渡して、ファイルから 1 行読み取ります。

tline = fgetl(fileID)
tline =

  'A global tsunami data set in xlsx format, comprising the following file:'

ファイルを閉じます。

fclose(fileID)

開くファイルの名前を要求するプロンプトを作成します。関数 fopen がファイルを開けない場合、該当するエラー メッセージが表示されます。

fileID = -1;
errmsg = '';
while fileID < 0 
   disp(errmsg);
   filename = input('Open file: ', 's');
   [fileID,errmsg] = fopen(filename);
end

ファイルを開いて、Shift-JIS 文字エンコードを使用してファイルに書き込みます。

fileID = fopen('japanese_out.txt','w','n','Shift_JIS');

'w' 入力は書き込みアクセスを、'n' 入力はネイティブなバイト順を、'Shift_JIS' は文字エンコード スキームを指定します。

fopen を使用して既にファイルを開いていることを前提とします。

fileID = fopen('tsunamis.txt');

開いているすべてのファイルのファイル識別子を取得します。

fIDs = fopen('all')
fIDs =

     3

開いているファイルのファイル名および文字エンコードを取得します。省略する出力引数の代わりに ~ を使用します。

[filename,~,~,encoding] = fopen(fileID)
filename =

    'matlabroot\toolbox\matlab\demos\tsunamis.txt'


encoding =

    'windows-1252'

ここで示す出力は代表的なものです。実際の結果は異なる可能性があります。

入力引数

すべて折りたたむ

開くファイルの名前。ファイル拡張子を含む文字ベクトルまたは string スカラーとして指定します。

UNIX® システムでは、filename'~/' または '~username/' で開始されている場合、関数 fopen によって、パスが現在のユーザーまたは指定されているユーザーのホーム ディレクトリにそれぞれ展開されます。

ファイルの場所によって、filename は次のいずれかの形式をとります。

現在のフォルダー、または MATLAB パス上のフォルダー

ファイル名を filename で指定します。

読み取りアクセスでファイルを開く場合にそのファイルが現在のフォルダーに存在しなければ、fopen によって MATLAB 検索パスに沿った検索が実行されます。

書き込みまたは追加アクセスでファイルを開く場合にそのファイルが現在のフォルダーに存在しなければ、fopen によって現在のディレクトリにファイルが作成されます。

例: 'sample_file.txt'

その他のフォルダー

ファイルが現在のフォルダーまたは MATLAB パス上のフォルダーにない場合は、filename に絶対パス名または相対パス名を指定します。

例: 'C:\myFolder\myFile.sample_file.txt'

例: 'myFolder\sample_file.txt'

リモートの場所

リモートの場所に保存されたファイルの場合、filename は次の形式の Uniform Resource Locator (URL) として指定されたファイルの絶対パスを含まなければなりません。

scheme_name://path_to_file/my_file.ext

リモートの場所に基づいて、scheme_name には次の表の値のいずれかを指定できます。

リモートの場所scheme_name
Amazon S3™s3
Windows Azure® Blob Storagewasb, wasbs
HDFS™hdfs

クラウド ファイル システムを使用している場合は、リモート ファイル システムと通信するための環境変数を設定します。詳細については、リモート データの操作を参照してください。

Hadoop 分散ファイル システム (HDFS) ボリューム内のファイルは読み取り/書き込みモードで開けません。

例: 's3://bucketname/path_to_file/sample_file.txt'

例: 'myFile.txt'

データ型: char | string

ファイル アクセス タイプ。文字ベクトルまたは string スカラーとして指定します。ファイルをバイナリ モードまたはテキスト モードで開くことができます。UNIX システムでは、どちらの変換モードでも同じ効果が得られます。バイナリ モードでファイルを開くには、次のいずれかを指定します。

'r'

読み取り用にファイルを開きます。

'w'

書き込み用にファイルを開くか、新規ファイルを作成します。既存の内容がある場合、その内容は破棄されます。

'a'

書き込み用にファイルを開くか、新規ファイルを作成します。ファイルの末尾にデータを追加します。

'r+'

読み込みおよび書き込み用にファイルを開きます。

'w+'

読み込みおよび書き込み用にファイルを開くか、新規ファイルを作成します。既存の内容がある場合、その内容は破棄されます。

'a+'

読み込みおよび書き込み用にファイルを開くか、新規ファイルを作成します。ファイルの末尾にデータを追加します。

'A'

現在の出力バッファーの自動フラッシュを行わずに、追加用にファイルを開きます。

'W'

現在の出力バッファーの自動フラッシュを行わずに、書き込み用にファイルを開きます。

テキスト モードでファイルを開くには、'rt''wt+' など、permission 引数に文字 't' を追加します。

Windows® システムでは、テキスト モードで次のような規則があります。

  • 読み取り操作では、改行文字の続くキャリッジ リターン ('\r\n') があった場合、そのキャリッジ リターンは削除されます。

  • 書き込み操作では、すべての改行文字の直前にキャリッジ リターンが挿入されます。

MATLAB でファイルに書き込んでから Microsoft® のメモ帳または '\n' を改行シーケンスとして認識しないテキスト エディターで開く場合は、新しいファイルをテキスト モードで開くか作成します。ファイルへの書き込み時に、各行は '\r\n' で終わらせます。例については、fprintf を参照してください。それ以外の場合は、ファイルをバイナリ モードで開くと、パフォーマンスが向上します。

同じファイルで読み込みと書き込みを行うには、以下の手順に従います。

  • プラス記号 '+' を含む permission の値でファイルを開きます。

  • fseek または frewind を読み取りと書き込みの操作の間で呼び出します。たとえば、fread の後に fwrite を呼び出したり、fwrite の後に fread を呼び出したりする場合は、その間で必ず fseek または frewind を呼び出してください。

データ型: char | string

ファイル内のバイトまたはビットの読み取り順序、または書き込み順序。次のいずれかの文字ベクトルまたは string スカラーとして指定します。

'n' または 'native'

ご使用のシステムのバイト順 (既定)

'b' または 'ieee-be'

ビッグエンディアン順

'l' または 'ieee-le'

リトルエンディアン順

's' または 'ieee-be.l64'

ビッグエンディアン順、64 ビット長データ型

'a' または 'ieee-le.l64'

リトルエンディアン順、64 ビット長データ型

既定では、現在サポートされているすべてのプラットフォームは、新しいファイルにリトルエンディアン順を使用します。既存のバイナリ ファイルは、ビッグエンディアン順またはリトルエンディアン順のいずれも使用できます。

データ型: char | string

fscanffprintffgetlfgetsfreadfwrite など、以降の読み取りおよび書き込み操作に使用する文字エンコード。文字ベクトルまたは string スカラーとして指定します。この文字ベクトルまたは string スカラーは、次のような標準文字エンコード スキーム名を含まなければなりません。

"Big5"

"ISO-8859-1"

"windows-874"

"Big5-HKSCS"

"ISO-8859-2"

"windows-949"

"CP949"

"ISO-8859-3"

"windows-1250"

"EUC-KR"

"ISO-8859-4"

"windows-1251"

"EUC-JP"

"ISO-8859-5"

"windows-1252"

"EUC-TW"

"ISO-8859-6"

"windows-1253"

"GB18030"

"ISO-8859-7"

"windows-1254"

"GB2312"

"ISO-8859-8"

"windows-1255"

"GBK"

"ISO-8859-9"

"windows-1256"

"IBM866"

"ISO-8859-11"

"windows-1257"

"KOI8-R"

"ISO-8859-13"

"windows-1258"

"KOI8-U"

"ISO-8859-15"

"US-ASCII"

 

"Macintosh"

"UTF-8"

 

"Shift_JIS"

 

読み取るファイルを開くときにエンコード スキームを指定しないと、fopen は自動文字セット検出を使用してエンコードを判定します。書き込むファイルを開くときにエンコード スキームを指定しないと、fopen は既定で UTF-8 を使用します。これは、データの損失または破損を起こすことなく、すべてのプラットフォームとロケール間での相互運用性を提供するためです。詳細については、低水準 I/O によるテキスト データ ファイルのインポートを参照してください。

サポートされている値のリストにない値がエンコード用に指定された場合、MATLAB は警告を表示します。ときには (常にではありません)、他のエンコード名を指定すると正しい結果が得られる場合があります。

データ型: char | string

開いているファイルのファイル識別子。整数として指定します。

データ型: double

ヒント

  • ほとんどの場合、ファイルをテキスト モードで開く必要はありません。MATLAB のインポート関数、すべての UNIX アプリケーションおよび Microsoft Word とワードパッドは、'\n' を改行インジケーターとして認識します。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する