Mozilla wants to hear from developers like you. http://www.surveygizmo.com/s3/2737536/440b74c45e94?a=mdn

MoveCopyDelete

ファイルの移動、コピー、削除

File オブジェクトにはディスク上のファイルを移動したりコピーしたりするためのメソッドがあります。moveTo メソッドはファイルを移動するために使用しますが、copyTo メソッドはファイルをコピーするために使用します。remove メソッドはファイルを削除するために使用します。

ファイルのコピー

copyTo メソッドはファイルやディレクトリをコピーするために使用します。これはコピーしたい元のファイルから呼び出します。このメソッドは 2 つの引数をとります。第 1 引数はファイルのコピー先のディレクトリ、第 2 引数はファイルの新しい名前であり、コピー先でリネームしたい場合に使用します。ファイルをリネームせず元のファイルと同じ名前を使用したい場合は第 2 引数に空文字列を使用します。

var file = IO.newFile("Home", "source.txt");
var destination = IO.newFile("Desktop", "");
file.copyTo(destination, "destination.txt");

この例ではユーザのホームディレクトリにある "source.txt" というファイルをデスクトップにコピーします。さらにファイルを "destination.txt" にリネームします。ここでは、コピーしたいファイルとファイルのコピー先であるディレクトリの 2 つのファイルオブジェクトが作成されます。前者の copyTo メソッドが呼び出され、その copyTo メソッドの第 1 引数として後者を渡しています。当然、コピー先はディレクトリでなければなりません。そうでなければエラーが発生します。

この場合、"source.txt" はファイルであることを想定しています。コピーしたいアイテムがディレクトリである場合、上記と全く同じ方法でコピーすることができます。こうするとコピーしたいディレクトリ全体とその中身がある場所から別の場所にコピーできます。例えば、次のようにすることでファイルが詰まったディレクトリのバックアップをとることができます。

var file = IO.newFile("Home", "importantData");
var destination = IO.newFile("Desktop", "");
destination.append("backups");
file.copyTo(destination, "");

この例では "importantData" というアイテムがデスクトップディレクトリ内の "backups" というディレクトリにコピーされます。append メソッドを使って "backups" サブディレクトリを取得しています。このメソッドはサブディレクトリに移動するために使用します。append メソッドについてのさらなる情報については ディレクトリ操作 をご覧ください。

この最後の例ではコピー先のファイル名に空文字列がセットされています。このことでアイテムがその名前を変更されることなくコピーされます。これは別のディレクトリにコピーするときの通常の挙動ですが、ファイルを同じディレクトリに別の名前でコピーするときにはファイル名を指定したいでしょう。そのような場合はコピー先ディレクトリを省略することもできます。

var file = IO.newFile("Desktop", "myimage.png");
file.copyTo(null, "anotherimage.png");

ここではコピー先に null が指定されているため、ファイルが同じディレクトリにコピーされます。

例えば、ファイルが存在しない場合やコピー先ディレクトリが書き込み不可の場合は、ファイルコピー時にエラーがたくさん発生することがあります。起こりうるあらゆるエラーを捕捉するために try-catch ブロックの中でファイル操作をするのは得策です。起こりうるファイル関係のエラーのリストについては ファイルのエラー を参照してください。

ファイルの移動

ファイルを移動するには copyTo メソッドに似た機能を持つ moveTo メソッドを使用するのがよいでしょう。以下の例はユーザのホームディレクトリにある "myfile.txt" というファイルを一時ディレクトリに移動します。copyTo メソッドと同様、moveTo はコピー先のディレクトリと新しいファイル名の 2 つの引数をとります。ファイルをリネームせずに既存の名前のままにしたい場合は第 2 引数に空文字列を使用します。

var file = IO.newFile("Home", "myfile.txt");
var destination = IO.newFile("Temporary", "");
file.moveTo(destination, "");

moveTo メソッドの第 2 引数は同じファイル名を使うように指示する空文字列です。移動時にファイル名を変更するためにはこの引数で名前を指定します。これは同じディレクトリ内のファイルをリネームする際に使用できます。同じディレクトリにファイルを移動するときは移動先の引数を null にできます。例えば、次の例は同じディレクトリ内のファイルをリネームします。

file.moveTo(null, "hello.txt");

移動先のファイルが既に存在する場合、moveTo メソッドは既存のファイルを置き換えます。このため、ファイルを移動する前に、ファイルオブジェクトの exists メソッドを使用してファイルが存在するかどうか確認するのがよいでしょう。

ファイルの削除

ファイルを削除するには、そのファイルオブジェクトの remove メソッドを使用します。このメソッドは再帰的に削除するかどうか指示する 1 つの真偽値引数をとります。もし真であり、かつファイルオブジェクトがディレクトリを参照していれば、そのディレクトリとその中の全ファイル、全サブディレクトリが削除されます。もし偽であれば、ディレクトリが空である場合にのみそのディレクトリが削除されます。ディレクトリが空でなければエラーが発生します。ファイルに対しては引数は単に無視されます。

var file = IO.newFile("Home", "photo.jpg");
file.remove(false);

この例では "photo.jpg" というファイルを削除します。

ドキュメントのタグと貢献者

 このページの貢献者: Electrolysis
 最終更新者: Electrolysis,