ホームページ  >  記事  >  システムチュートリアル  >  ファイルからデータを読み取るには、アプリケーションはまずオペレーティング システムの関数を呼び出します。

ファイルからデータを読み取るには、アプリケーションはまずオペレーティング システムの関数を呼び出します。

WBOY
WBOY転載
2024-02-19 09:42:02413ブラウズ

ファイル I/O で、ファイル linux ファイル ハンドル からデータを読み取るには、アプリケーションはまずオペレーティング システム関数を呼び出してファイル名を渡し、ドキュメントを開くファイルへのパスを選択する必要があります。 。この関数はシーケンス番号、つまり Perl ファイル ハンドル (ファイル ハンドル) linux ファイル ハンドル を返します。この Perl ファイル ハンドルは、開いているファイルを識別するための唯一の基礎となります。ファイルからデータを読み取るには、アプリケーションは関数 ReadFile を呼び出し、ビデオ メモリ内の Perl ファイル ハンドルのアドレスとコピーするバイト数をオペレーティング システムに送信する必要があります。タスクが完了すると、システム関数を呼び出してファイルが閉じられます。

あなたは独我論哲学者の真似をして人工知能プログラムを書くだけでなく、そのプログラムは外部と通信しない方法を使用しています。クラス例の 3 行目と 4 行目には、ファイルハンドルと呼ばれる別の Perl ファイルを参照するデータ型である「GRADES」が表示されます。ハンドルは、作業中の名前を覚えやすくし、個々のキャッシュなどの複雑さを隠すために、ファイル、デバイス、ソケット、またはパイプラインに付ける名前です。 (内部的には、ハンドルは C のストリーム、または BASIC の I/O チャネルに似ています。) ハンドルを使用すると、さまざまな場所への入出力が簡単になります。 Perl が優れた言語である理由の 1 つは、複数のファイルと通信し、それらをすべて一度に処理できることです。外部オブジェクトに適切なシンボル名を付けることは、優れた言語に不可欠な部分です [1]。

Perl が優れた言語であるその他の利点は、8 ビットであること、埋め込み可能であること、拡張モードを通じて Perl に他のプログラムを埋め込むことができることです。簡潔でWeb上で使いやすいです。明るくて話しやすい環境です。これはさまざまな方法で参照できます (上記のように)。実際、言語自体は、質問を超えて理解できないほど厳密に構造化されているわけではありません。再びTMTOWTDIに戻ります。

ハンドルを作成し、open 関数を通じてファイルに接続します。 open は 2 つのパラメータを取ります: ハンドルと、それにリンクするファイルの名前です。 Perl には、事前定義された (および事前に開かれた) ハンドルもいくつか用意されています。 STDIN はプログラムの通常の入力チャンネルであり、STDOUT はプログラムの通常の出力チャンネルです。 STDERR は追加の出力チャネルであり、プログラムが入力を出力に変換するときにいくつかの指示を与えることができます [2]。

通常、これらのハンドルはターミナルにリンクされているため、プログラムを入力して表示できますが、ファイルにリンクすることもできます。オペレーティング システムがすでにこのハンドルを提供しているため、Perl はこの事前定義ハンドルを提供できます。 UNIX では、プロセスは親プロセス (通常はシェル) から標準入力、出力、およびエラーを継承します。シェルの役割の 1 つは、子プロセスがそれについて心配する必要がないように、この I/O ストリームを構造化することです)。

linux文件句柄_句柄文件超多_句柄文件和文件句柄

open 関数を使用してさまざまな目的 (入力、出力、パイプライン) のハンドルを作成できるため、実行したい内容を指定できなければなりません。 UNIX コマンドラインと同様に、ファイル名に文字を追加するだけです。

コードをコピーします。コードは次のとおりです。

open(SESAME,"filename");#既存のファイルから読み取ります

句柄文件超多_linux文件句柄_句柄文件和文件句柄

open(SESAME,"open(SESAME,">filename");#ファイルを作成して書き込みます

open(SESAME,">>filename");#既存のファイルへの書き込みを継続します

open(SESAME,"|output-pipe-command");#出力フィルターを構築する

open(SESAME,"input-pipe-command|");#入力フィルターを構築する

聞いた通り、任意の名前を選択できます。 SESAME ハンドルが開かれると、(close(SESAME) を使用して) 明示的に閉じるまで、そのハンドルを使用してファイルまたはパイプにアクセスすることができます。または、同じハンドルに対する一連のオープンにより、このハンドルが別のファイルにリンクされます [3]。

すでに開いているハンドルを開くと、最初のファイルが暗黙的に閉じられ、Perl ファイル ハンドルで使用できなくなり、別のファイルが開きます。これがあなたが本当にやりたいことであるということを心に留めておく必要があります。 Linux ダウンロード ツールでは、($handle,$file) を開くと、$handle に空の文字列 (null) が含まれるなど、偶然が起こることがあります。 $handle を必ず単一の値に設定してください。そうしないと、新しいファイルが null ハンドルで開かれることになります。

句柄文件超多_句柄文件和文件句柄_linux文件句柄

入力用のハンドルを開いたら (または STDIN を使用したら)、「行読み取り操作」を使用して行を読み取ることができます。これは、その形状から石積み作業としても知られています。この石積み操作には、読み取りたい handle()[4] が含まれています。次のように、STDID ハンドルを使用して、ユーザーが提供した回答を読み取ります。

空の石積み操作では、コマンド ラインで指定されたすべてのファイルから読み取ります。指定しない場合は、STDIN から読み取ります。 (これは多くの UNIX "フィルター" プログラムの標準的な動作です)

コードをコピーします。コードは次のとおりです。

句柄文件超多_句柄文件和文件句柄_linux文件句柄

printSTDOUT"Enteranumber:";#番号の入力を要求します

$number=;#数字を入力してください

printSTDOUT"Thenumberis$number";#この数値を出力します

与えた例は理解できましたか? print 文の中で STDOUT は何をしますか? これは、出力ハンドラーを使用する方法の 1 つです。ハンドルは print ステートメントの最初のパラメータとして使用でき、存在する場合は出力先を示します。この例では、出力がすでに STDOUT であるため、ハンドルは冗長です。入力のデフォルトは STDIN で、出力のデフォルトは STDOUT です。 (混乱を避けるために、クラスの反例の 18 行目を省略しました。)

また、あなたには理解できないことが 1 つあります。内部の例を試してみると、非常に空の行が得られることがわかります。読み取り時に入力行から改行文字を手動で削除しなかったため (たとえば、「9」を入力した場合)。この場合、改行を削除したい場合、Perl は Chomp 関数と chomp 関数を提供します。 Chomp は渡された最後の文字を無差別に削除 (そして返し) しますが、chomp はレコード識別子の末尾 (通常は "") のみを削除し、削除された文字数を返します。

以上がファイルからデータを読み取るには、アプリケーションはまずオペレーティング システムの関数を呼び出します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はitcool.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。