Node.js は、UNIX に似た (POSIX) 標準ファイル操作 API のセットを提供します。 ノード インポート ファイル システム モジュール (fs) の構文は次のとおりです。
var fs = require("fs")
Node.js ファイル システム (fs モジュール) モジュールのメソッドには、非同期バージョンと同期バージョンがあります。たとえば、ファイルの内容を読み取る関数には、非同期の fs.readFile() と同期の fs.readFileSync() があります。
非同期メソッド関数の最後のパラメータはコールバック関数であり、コールバック関数の最初のパラメータにはエラー メッセージ (error) が含まれます。
非同期メソッドを使用することをお勧めします。同期メソッドと比較して、非同期メソッドはパフォーマンスが高く、速度が速く、ブロッキングがありません。
次の内容を含む input.txt ファイルを作成します。
htmlチュートリアル公式サイトアドレス:w3cstudy.cc ファイル読み取り例
file.js ファイルを作成します。コードは次のとおりです。
var fs = require("fs");
// 非同期で読み取る
fs.readFile('input.txt', function (err, data) {
if (err) {
return console.error(err);
}
console.log("非同期で読み取る: " + data.toString());
});
// 同期的に読み取ります
var data = fs.readFileSync('input.txt');
console.log("同期的に読み取ります: " + data.toString());
console.log("プログラムの実行が完了しました。");
上記のコードの実行結果は次のとおりです。
$ node file.js 同期読み込み:htmlチュートリアル公式サイトアドレス:w3cstudy.cc ファイル読み取り例 プログラムの実行が完了しました。 非同期読み込み:htmlチュートリアル公式サイトアドレス:w3cstudy.cc ファイル読み取り例
次に、Node.js ファイルシステムのアプローチを詳しく見てみましょう。
以下は、非同期モードでファイルを開くための構文です。
fs.open(path, flags[, mode], callback)
パラメータの使用手順は次のとおりです。
path - ファイルへのパス。
flags - ファイルを開く動作。 具体的な値については以下を参照してください。
mode - ファイル モード (アクセス許可) を設定します。ファイル作成のデフォルトのアクセス許可は 0666 (読み取り可能、書き込み可能) です。
callback - 2 つのパラメータを持つコールバック関数 (例: callback(err, fd))。
flags パラメータには次の値を指定できます。
| Flag | 説明 |
|---|---|
| r | ファイルを読み取りモードで開きます。 ファイルが存在しない場合は例外がスローされます。 |
| r+ | ファイルを読み取り/書き込みモードで開きます。 ファイルが存在しない場合は例外がスローされます。 |
| rs | ファイルを同期的に読み取ります。 |
| rs+ | はファイルの読み取りと書き込みを同期的に行います。 |
| w | ファイルを書き込みモードで開き、ファイルが存在しない場合は作成します。 |
| wx | 「w」と同様ですが、ファイル パスが存在する場合はファイルの書き込みに失敗します。 |
| w+ | ファイルを読み取り/書き込みモードで開き、ファイルが存在しない場合は作成します。 |
| wx+ | 「w+」と同様ですが、ファイル パスが存在する場合はファイルの読み取りまたは書き込みに失敗します。 |
| a | ファイルを追加モードで開き、ファイルが存在しない場合は作成します。 |
| ax | 「a」と同様ですが、ファイル パスが存在する場合はファイルの追加に失敗します。 |
| a+ | ファイルを読み取り追加モードで開き、ファイルが存在しない場合は作成します。 |
| ax+ | 「a+」と同様ですが、ファイル パスが存在する場合、ファイルの読み取り追加は失敗します。 |
次に、file.js ファイルを作成し、読み取りと書き込みのために input.txt ファイルを開きます。コードは次のとおりです。
var fs = require("fs");
// ファイルを非同期で開きます
console.log("ファイルを開く準備ができました!");
fs.open('input.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("ファイルが正常に開きました!");
});
上記のコードの実行結果は次のとおりです。
$ node file.js ファイルを開く準備ができました。 ファイルが正常に開きました。
非同期モードでファイル情報を取得するための構文形式は次のとおりです。
fs.stat(path, callback)
パラメータの使用手順は次のとおりです。
path - ファイルのパス。
callback - (err, stats) のような 2 つのパラメータを持つコールバック関数、stats は fs.Stats オブジェクトです。
fs.stat(path) が実行されると、stats クラスのインスタンスがそのコールバック関数に返されます。 ファイルの関連属性は、stats クラスで提供されるメソッドを通じて判断できます。 たとえば、ファイルかどうかを判断するには:
var fs = require('fs');
fs.stat('/Users/liuht/code/itbilu/demo/fs.js', function (err, stats) {
console.log(stats.isFile()); //true
})
stats クラスのメソッドは次のとおりです:
| メソッド | 説明 |
|---|---|
| stats.isFile() | ファイルの場合は true を返し、それ以外の場合は false を返します。 |
| stats.isDirectory() | ディレクトリの場合は true を返し、そうでない場合は false を返します。 |
| stats.isBlockDevice() | ブロック デバイスの場合は true を返し、それ以外の場合は false を返します。 |
| stats.isCharacterDevice() | キャラクタ デバイスの場合は true を返し、それ以外の場合は false を返します。 |
| stats.isSymbolicLink() | シンボリック リンクの場合は true を返し、それ以外の場合は false を返します。 |
| stats.isFIFO() | FIFO の場合は true を返し、それ以外の場合は false を返します。 FIFO は、UNIX の特殊なタイプのコマンド パイプです。 |
| stats.isSocket() | ソケットの場合は true を返し、それ以外の場合は false を返します。 |
次に、file.js ファイルを作成します。コードは次のとおりです。
var fs = require("fs");
console.log("ファイルを開く準備ができました!");
fs.stat('input.txt', function (err, stats) {
if (err) {
return console.error(err);
}
console.log(stats);
console.log("ファイル情報の読み取りに成功しました!");
// ファイルタイプをチェックする
console.log("それはファイル (isFile) ですか? " + stats.isFile());
console.log("ディレクトリ (isDirectory) ですか? " + stats.isDirectory());
});
上記のコードの実行結果は次のとおりです。
$ node file.js
ファイルを開く準備ができました!
{ dev: 16777220,
mode: 33188,
nlink: 1,
uid: 501,
gid: 20,
rdev: 0,
blksize: 4096,
ino: 40333161,
size: 61,
blocks: 8,
atime: Mon Sep 07 2015 17:43:55 GMT+0800 (CST),
mtime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST),
ctime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST) }
ファイル情報の読み取りに成功しました。
ファイル (isFile) ですか? true
ディレクトリ (isDirectory) ですか? false
以下は、非同期モードでファイルを書き込むための構文です。
fs.writeFile(file, data[, options], callback)
ファイルを直接開く writeFile のデフォルト モードは w モードであるため、ファイルが存在する場合、このメソッドによって書き込まれた内容が古いファイルの内容を上書きします。
パラメータの使用手順は次のとおりです。
file - ファイル名またはファイル記述子。
data - ファイルに書き込むデータ。String (文字列) または Buffer (バッファ) オブジェクトのいずれかです。
options - このパラメータは、{encoding, mode, flag} を含むオブジェクトです。 デフォルトのエンコーディングは utf8、モードは 0666、フラグは「w」です。
callback - コールバック関数。コールバック関数にはエラー メッセージ パラメーター (err) のみが含まれ、書き込みが失敗した場合に戻ります。
次に、file.js ファイルを作成します。コードは次のとおりです。
var fs = require("fs");
console.log("ファイルに書き込む準備ができました");
fs.writeFile('input.txt', 'fs.writeFile を通じてファイルの内容を書き込みます', function(err) {
if (err) {
return console.error(err);
}
console.log("データは正常に書き込まれました!");
console.log("----------私が境界線です-------------")
console.log("書き込まれたデータを読み取ってください!");
fs.readFile('input.txt', function (err, data) {
if (err) {
return console.error(err);
}
console.log("ファイルデータを非同期的に読み取ります: " + data.toString());
});
});
上記のコードの実行結果は次のとおりです。
$ node file.js ファイルに書き込む準備ができました データの書き込みに成功しました。 --------私が境界線です------------- 書き込まれたデータを読み取ろう! ファイル データを非同期で読み取る: fs.writeFile を通じてファイルの内容を書き込みます。
以下は、非同期モードでファイルを読み取るための構文です。
fs.read(fd, buffer, offset, length, position, callback)
このメソッドは、ファイル記述子を使用してファイルを読み取ります。
パラメータの使用手順は次のとおりです。
fd - fs.open() メソッドによって返されるファイル記述子。
buffer - データが書き込まれるバッファー。
offset - バッファ書き込みの書き込みオフセット。
length - ファイルから読み取るバイト数。
position - 読み取られるファイルの開始位置。position の値が null の場合、現在のファイル ポインターの位置から読み取ります。
callback - err、bytesRead、buffer の 3 つのパラメータを持つコールバック関数。err はエラー メッセージ、bytesRead は読み取ったバイト数を示し、buffer はバッファ オブジェクトです。
input.txt ファイルの内容は次のとおりです:
HTMLチュートリアルのアドレス:w3cstudy.cc
次に、file.js ファイルを作成します。コードは次のとおりです。
var fs = require("fs");
var buf = new Buffer.alloc(1024);
console.log("既存のファイルを開く準備ができました!");
fs.open('input.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("ファイルが正常に開きました!");
console.log("ファイルを読み取る準備ができました:");
fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
if (err){
console.log(err);
}
console.log(bytes + "読み取りバイト数");
// 読み取ったバイトのみを出力します
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
}
});
});
上記のコードの実行結果は次のとおりです。
$ node file.js 既存のファイルを開く準備ができました。 ファイルが正常に開きました。 ファイルを読み取る準備をします。 42バイトが読み取られます HTMLチュートリアルのアドレス:w3cstudy.cc
以下は、非同期モードでファイルを閉じるための構文です。
<前> fs.close(fd, コールバック)このメソッドは、ファイル記述子を使用してファイルを読み取ります。
パラメータの使用手順は次のとおりです。
fd - fs.open() メソッドによって返されるファイル記述子。
callback - コールバック関数、パラメータなし。
input.txt ファイルの内容は次のとおりです:
HTMLチュートリアルのアドレス:w3cstudy.cc
次に、file.js ファイルを作成します。コードは次のとおりです。
var fs = require("fs");
var buf = new Buffer.alloc(1024);
console.log("ファイルを開く準備ができました!");
fs.open('input.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("ファイルが正常に開きました!");
console.log("ファイルを読み取る準備ができました!");
fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
if (err){
console.log(err);
}
// 読み取ったバイトのみを出力します
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
}
// ファイルを閉じます
fs.close(fd, function(err){
if (err){
console.log(err);
}
console.log("ファイルは正常に閉じられました");
});
});
});
上記のコードの実行結果は次のとおりです。
$ node file.js ファイルを開く準備ができました。 ファイルが正常に開きました。 ファイルを読み取る準備ができました。 HTMLチュートリアルのアドレス:w3cstudy.cc ファイルは正常に閉じられました
以下は、非同期モードでファイルをインターセプトする構文形式です。
fs.ftruncate(fd, len, callback)
このメソッドは、ファイル記述子を使用してファイルを読み取ります。
パラメータの使用手順は次のとおりです。
fd - fs.open() メソッドによって返されるファイル記述子。
len - ファイルコンテンツインターセプトの長さ。
callback - コールバック関数、パラメータなし。
input.txt ファイルの内容は次のとおりです:
site:w3cstudy.cc
次に、file.js ファイルを作成します。コードは次のとおりです。
var fs = require("fs");
var buf = new Buffer.alloc(1024);
console.log("ファイルを開く準備ができました!");
fs.open('input.txt', 'r+', function(err, fd) {
if (err) {
return console.error(err);
}
console.log("ファイルが正常に開きました!");
console.log("ファイルの内容を 10 バイト以内でインターセプトし、余分な部分は削除されます。");
// ファイルをインターセプトする
fs.ftruncate(fd, 10, function(err){
if (err){
console.log(err);
}
console.log("ファイルは正常にインターセプトされました。");
console.log("同じファイルを読み取ります");
fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
if (err){
console.log(err);
}
// 読み取ったバイトのみを出力します
if(bytes > 0){
console.log(buf.slice(0, bytes).toString());
}
// ファイルを閉じます
fs.close(fd, function(err){
if (err){
console.log(err);
}
console.log("ファイルは正常に閉じられました!");
});
});
});
});
上記のコードの実行結果は次のとおりです。
$ node file.js ファイルを開く準備ができました。 ファイルが正常に開きました。 ファイルの内容を 10 バイト以内でインターセプトし、余分な部分が削除されます。 ファイルのインターセプトに成功しました。 同じファイルを読み取る site:w3cst ファイルは正常に閉じられました
ファイルを削除するための構文は次のとおりです。
fs.unlink(path, callback)
パラメータの使用手順は次のとおりです。
path - ファイルのパス。
callback - コールバック関数、パラメータなし。
input.txt ファイルの内容は次のとおりです:
site:w3cstudy.cc
次に、file.js ファイルを作成します。コードは次のとおりです。
var fs = require("fs");
console.log("ファイルを削除する準備ができました!");
fs.unlink('input.txt', function(err) {
if (err) {
return console.error(err);
}
console.log("ファイルは正常に削除されました!");
});
上記のコードの実行結果は次のとおりです。
$ node file.js ファイルを削除する準備ができました。 ファイルは正常に削除されました。
input.txt ファイルを再度確認すると、このファイルが存在しないことがわかります。
ディレクトリを作成するための構文は次のとおりです。
fs.mkdir(path[, options], callback)
パラメータの使用手順は次のとおりです。
path - ファイルのパス。
options パラメータは次のとおりです:
callback - コールバック関数、パラメータなし。
次に、file.js ファイルを作成します。コードは次のとおりです。
var fs = require("fs");
// tmp ディレクトリが存在する必要があります
console.log(""ディレクトリ /tmp/test/");
fs.mkdir("/tmp/test/",function(err){
if (err) {
return console.error(err);
}
console.log("ディレクトリは正常に作成されました。");
});
上記のコードの実行結果は次のとおりです。
$ node file.js ディレクトリ /tmp/test/ ディレクトリが正常に作成されました。
作成されたディレクトリ /tmp および /tmp/a が存在するかどうかに関係なく、 recursive: true パラメータを追加できます。
fs.mkdir('/tmp/a/apple', { recursive: true }, (err) => {
if (err) throw err;
});ディレクトリを読み取るための構文形式は次のとおりです。
fs.readdir(path, callback)
パラメータの使用手順は次のとおりです。
path - ファイルのパス。
callback - コールバック関数。コールバック関数には 2 つのパラメータ err、files があります。err はエラー メッセージ、files はディレクトリ内のファイル配列リストです。
次に、file.js ファイルを作成します。コードは次のとおりです。
var fs = require("fs");
console.log("/tmp ディレクトリの表示");
fs.readdir("/tmp/",function(err, files){
if (err) {
return console.error(err);
}
files.forEach( function (file){
console.log( file );
});
});
上記のコードの実行結果は次のとおりです。
$ node file.js /tmp ディレクトリを表示する input.out output.out test test.txt
ディレクトリを削除するための構文は次のとおりです。
fs.rmdir(path, callback)
パラメータの使用手順は次のとおりです。
path - ファイルのパス。
callback - コールバック関数、パラメータなし。
次に、file.js ファイルを作成します。コードは次のとおりです。
var fs = require("fs");
// 実行前に空の /tmp/test ディレクトリを作成します
console.log("ディレクトリ /tmp/test を削除する準備をします");
fs.rmdir("/tmp/test",function(err){
if (err) {
return console.error(err);
}
console.log("/tmp ディレクトリの読み取り");
fs.readdir("/tmp/",function(err, files){
if (err) {
return console.error(err);
}
files.forEach( function (file){
console.log( file );
});
});
});
上記のコードの実行結果は次のとおりです。
$ node file.js ディレクトリ /tmp/test を削除する準備をします。 /tmp ディレクトリを読み取ります ……
以下は、Node.js ファイル モジュールと同じメソッドのリストです。
| 番号 | メソッドと説明 |
|---|---|
| 1 | fs.rename(oldPath, newPath, callback) 非同期 rename()。コールバック関数にはパラメータがありませんが、例外。 |
| 2 | fs.ftruncate(fd, len, callback) 非同期 ftruncate()。コールバック関数にはパラメータがありませんが、例外。 |
| 3 | fs.ftruncateSync(fd, len) sync ftruncate() |
| 4 | fs.truncate(path, len, callback) 非同期 truncate()。コールバック関数にはパラメータがありませんが、例外。 |
| 5 | fs.truncateSync(path, len) sync truncate() |
| 6 | fs.chown(path, uid, gid, callback) 非同期 chown()。コールバック関数にはパラメータがありませんが、投げ異常。 |
| 7 | fs.chownSync(path, uid, gid) sync chown() |
| 8 | fs.fchown(fd, uid, gid, callback) 非同期 fchown()。コールバック関数にはパラメータがありませんが、投げ異常。 |
| 9 | fs.fchownSync(fd, uid, gid) sync fchown() |
| 10 | fs.lchown(path, uid, gid, callback) 非同期 lchown()。コールバック関数にはパラメータがありませんが、投げ異常。 |
| 11 | fs.lchownSync(path, uid, gid) sync lchown() |
| 12 | fs.chmod(path, mode, callback) 非同期 chmod()。コールバック関数にはパラメータがありませんが、例外。 |
| 13 | fs.chmodSync(パス、モード) chmod() を同期します。 |
| 14 | fs.fchmod(fd, mode, callback) 非同期 fchmod()。コールバック関数にはパラメータがありませんが、例外。 |
| 15 | fs.fchmodSync(fd, モード) fchmod() を同期します。 |
| 16 | fs.lchmod(path, mode, callback) 非同期 lchmod()。コールバック関数にはパラメータがありませんが、例外。 Mac OS X でのみ利用可能です。 |
| 17 | fs.lchmodSync(パス、モード) lchmod() を同期します。 |
| 18 | fs.stat(path, callback) 非同期 stat()。コールバック関数には 2 つのパラメータ err、stats、stats は fs があります。 .Stats オブジェクト。 |
| 19 | fs.lstat(path, callback) 非同期 lstat()。コールバック関数には 2 つのパラメータ err、stats、stats は fs があります。 .Stats オブジェクト。 |
| 20 | fs.fstat(fd, callback) 非同期 fstat()。コールバック関数には 2 つのパラメータ err、stats、stats is fs があります。 .Stats オブジェクト。 |
| 21 | fs.statSync(path) Sync stat()。fs.Stats のインスタンスを返します。 |
| 22 | fs.lstatSync(path) lstat() を同期します。fs.Stats のインスタンスを返します。 |
| 23 | fs.fstatSync(fd) fstat() を同期します。fs.Stats のインスタンスを返します。 |
| 24 | fs.link(srcpath, dstpath, callback) 非同期 link()。コールバック関数にはパラメータがありませんが、例外。 |
| 25 | fs.linkSync(srcpath, dstpath) 同期リンク()。 |
| 26 | fs.symlink(srcpath, dstpath[, type], callback) 非同期 symlink()。コールバック関数にはパラメータがありません。ただし、例外がスローされる場合があります。 type 引数は、「dir」、「file」、または「junction」に設定できます (デフォルトは「file」)。 |
| 27 | fs.symlinkSync(srcpath, dstpath[, type]) symlink() を同期します。 |
| 28 | fs.readlink(path, callback) 非同期 readlink()。コールバック関数には 2 つのパラメータ err、linkString があります。 |
| 29 | fs.realpath(path[,cache], callback) 非同期 realpath()。コールバック関数には 2 つのパラメータ err、resolvedPath があります。 。 |
| 30 | fs.realpathSync(path[, キャッシュ]) realpath() を同期します。 絶対パスを返します。 |
| 31 | fs.unlink(path, callback) 非同期 unlink()。コールバック関数にはパラメータがありませんが、例外がスローされる可能性があります。 |
| 32 | fs.unlinkSync(path) sync unlink(). |
| 33 | fs.rmdir(path, callback) 非同期 rmdir()。コールバック関数にはパラメータがありませんが、例外をスローする可能性があります。 |
| 34 | fs.rmdirSync(パス) rmdir() を同期します。 |
| 35 | fs.mkdir(path[, mode], callback) S 非同期 mkdir(2)。コールバック関数にはパラメータがありません。ただし、例外がスローされる場合があります。 アクセス許可のデフォルトは 0777 です。 |
| 36 | fs.mkdirSync(path[, mode]) sync mkdir(). |
| 37 | fs.readdir(path, callback) 非同期 readdir(3)。ディレクトリの内容を読み取ります。 |
| 38 | fs.readdirSync(path) 同期 readdir() ファイルの配列リストを返します。 |
| 39 | fs.close(fd, callback) 非同期 close()。コールバック関数にはパラメータがありませんが、例外をスローする可能性があります。 |
| 40 | fs.closeSync(fd) 同期 close()。 |
| 41 | fs.open(path, flags[, mode], callback) ファイルを非同期で開きます。 |
| 42 | fs.openSync(path, flags[, mode]) fs.open() の同期バージョン。 |
| 43 | fs.utimes(path, atime, mtime, callback) |
| 44 | fs.utimesSync(path, atime, mtime) ファイルのタイムスタンプを変更すると、ファイルは指定されたファイル パスを通過します。 |
| 45 | fs.futimes(fd, atime, mtime, callback) |
| 46 | fs.futimesSync(fd, atime, mtime) ファイル記述子で指定されたファイルのタイムスタンプを変更します。 |
| 47 | fs.fsync(fd, callback) 非同期 fsync。コールバック関数にはパラメータがありませんが、例外をスローする可能性があります。 |
| 48 | fs.fsyncSync(fd) fsync を同期します。 |
| 49 | fs.write(fd,buffer,offset,length[,position],callback) バッファの内容をpass ファイル記述子で指定されたファイル。 |
| 50 | fs.write(fd, data[,position[,coding]], callback) ファイル記述子 fd を介してファイルを書き込みますコンテンツ。 |
| 51 | fs.writeSync(fd,buffer,offset,length[,position]) fs.write() の同期バージョン。 |
| 52 | fs.writeSync(fd, data[,position[,coding]]) fs.write() の同期バージョン。< /td> |
| 53 | fs.read(fd, バッファ, オフセット, 長さ, 位置, コールバック) ファイル記述子 fd を通じてファイルの内容を読み取ります。 |
| 54 | fs.readSync(fd, バッファ, オフセット, 長さ, 位置) fs.read の同期バージョン。 |
| 55 | fs.readFile(filename[, options], callback) ファイルの内容を非同期的に読み取ります。 |
| 56 | fs.readFileSync(filename[, options]) fs.readFile の同期バージョン。 |
| 57 | fs.writeFile(filename, data[, options], callback) ファイルの内容を非同期に書き込みます。 |
| 58 | fs.writeFileSync(filename, data[, options]) fs.writeFile の同期バージョン。 |
| 59 | fs.appendFile(filename, data[, options], callback) ファイルの内容を非同期的に追加します。 |
| 60 | fs.appendFileSync(filename, data[, options]) fs.appendFile の同期バージョン。 |
| 61 | fs.watchFile(filename[, options],listener) ファイルの変更を監視します。 |
| 62 | fs.unwatchFile(filename[,listener]) ファイル名の変更の監視を停止します。 |
| 63 | fs.watch(filename[, options][,listener]) ファイル名の変更を確認します。ファイル名はファイルまたはディレクトリ。 fs.FSWatcher オブジェクトを返します。 |
| 64 | fs.exists(path, callback) 指定されたパスが存在するかどうかを確認します。 |
| 65 | fs.existsSync(path) fs.exists の同期バージョン。 |
| 66 | fs.access(path[, mode], callback) 指定されたパスのユーザー権限をテストします。 |
| 67 | fs.accessSync(path[, mode]) fs.access の同期バージョン。 |
| 68 | fs.createReadStream(path[, options]) ReadStream オブジェクトを返します。 |
| 69 | fs.createWriteStream(path[, options]) WriteStream オブジェクトを返します。 |
| 70 | fs.symlink(srcpath, dstpath[, type], callback) 非同期 symlink()。コールバック関数にはパラメータがありません。ただし、例外がスローされる場合があります。 |