プログラミングにおいて、ファイルのUniform Resource Identifier(URI)スキームは、ホストコンピュータ上のファイルを具体的に識別するために使用されるURIの特定の形式です。URIはあらゆるものを識別できますが、ファイルの識別には特定の構文が関連付けられています。[ 1 ] [ 2 ]
ファイルURIの形式は次の通りです
ファイル://ホスト/パス
ここで、hostはパスにアクセスできるシステムの完全修飾ドメイン名であり、pathはディレクトリ/ディレクトリ/.../名前という形式の階層ディレクトリパスです。hostが省略された場合は、 URLを解釈しているマシンである「 localhost 」とみなされます。hostを省略する場合、スラッシュは省略されないことに注意してください(「ファイル:///piro.txt「有効です」ファイル://simpen.txt」はそうではありませんが、一部のインタープリタは後者を処理できます。
RFC 3986 には、URI 内の「..」および「.」セグメントの処理に関する追加情報が含まれています。
file:/path(ホスト名なし)、file:///path(空のホスト名)、またはで始まる必要がありますfile://hostname/path。file://path(つまり、ホスト名なしの 2 つのスラッシュ) は決して正しくありませんが、よく使用されます。Windows UNCファイル名 ( など) は2 つの方法で\\server\folder\data.xml表現できます。これらは両方とも RFC 8089 の付録 E で「非標準」として説明されています。最初の方法 (ここでは 2 スラッシュ形式と呼びます) は、URI のAuthorityfile://server/folder/data.xml部分を使用してサーバー名を表すもので、 となります。2 番目の方法 (ここでは 4 スラッシュ形式と呼びます) は、サーバー名をPathコンポーネントの一部として表すもので、URI は となりますfile:////server/folder/data.xml。どちらの形式も積極的に使用されています。Microsoft .NET (たとえば、メソッドnew Uri(path)) では一般に 2 スラッシュ形式が使用され、Java (たとえば、メソッドnew URI(path)) では一般に 4 スラッシュ形式が使用されます。どちらの形式でも、URI に対する最も一般的な操作 (相対 URI の解決、およびリモート ファイルへの接続を取得するための逆参照) を正常に使用できます。しかし、これらのURIは非標準であるため、あまり一般的ではない操作が失敗することがあります。例としては、正規化操作(RFC 3986で定義され、Javajava.net.URI.normalize()メソッドで実装されている)があり、これはfile:////server/folder/data.xml使用できない形式になりますfile:/server/folder/data.xml。[ 6 ]
以下は、同じ/etc/fstabファイル を指す 2 つのUnix の例です。
ファイル://localhost/etc/fstab ファイル:///etc/fstab
KDE環境では、権限フィールドのない URI が使用されます。
ファイル:/etc/fstab
以下は、Windows システム上の一部のアプリケーションで受け入れられる可能性のある、同じローカル ファイルc: \ WINDOWS \ clock.aviを参照する例です。
ファイル://localhost/c:/WINDOWS/clock.avi ファイル:///c:/WINDOWS/clock.avi
Windows Shell APIが理解できるURIは次のとおりです: [ 7 ]
ファイル:///c:/WINDOWS/clock.avi
ドライブ文字の後にコロンとスラッシュが続く部分は、許容されるファイル URI の一部であることに注意してください。
Microsoft Windows システムでは、ファイル URL において、デバイス文字の後の通常のコロン (:) が縦棒 (|) に置き換えられる場合があります。これは、コロンがパス部分で予約文字とされていた元の URL 構文を反映しています。
Internet Explorer 4以降、WindowsではファイルURIが標準化されており、以下のスキームに従う必要があります。これは、URLMONまたはSHLWAPIを用いてURIの解析、取得、またはバインディングを行うすべてのアプリケーションに適用されます。パスをURLに変換するには を使用しUrlCreateFromPath、URLをパスに変換するには を使用しますPathCreateFromUrl。[ 7 ]
ファイル「the file.txt」にアクセスするには、次のようにします。
ネットワークの場所の場合:
ファイル://ホスト名/パス/to/the%20file.txt
または、ローカル ファイルの場合、ホスト名は省略されますが、スラッシュは省略されません (3 番目のスラッシュに注意してください)。
ファイル:// / c:/path/to/the%20file.txt
これは、ホスト名の代わりに文字列「localhost」やドット「.」を指定することとは異なります。文字列「localhost」は、UNCパスとしてファイルにアクセスしようとします\\localhost\c:\path\to\the file.txtが、共有名ではコロンが許可されていないため、これは機能しません。ドット「.」を使用すると、文字列は として渡され\\.\c:\path\to\the file.txt、ローカルファイルでは機能しますが、ローカルシステム上の共有では機能しません。例えば、は機能しません。これは、共有名がネットワーク共有ではなく、DOSDEVICES名前空間の一部として解釈される file://./sharename/path/to/the%20file.txtためです。
以下の概要は要件を大まかに説明したものです。
可能であれば、提供されている関数を使用してください。プログラムでURLを作成する必要があり、SHLWAPI.dllにアクセスできない場合(例えば、スクリプトや同等の関数が利用できない他のプログラミング環境など)は、上記の概要が役立ちます。
Win32上のレガシーアプリケーションのインストールベースを支援するため、PathCreateFromUrlこれらの基準を満たさない特定のURLを認識し、それらを一律に扱います。これらは「健全な」ファイルURLではなく「レガシー」ファイルURLと呼ばれます。[ 8 ]
過去には、様々なアプリケーションが他のシステムを使用していました。中には、2つのスラッシュを追加するものもありました。例えば、UNCパスは「healthy」の代わりに に\\remotehost\share\dir\file.txtなります。 file:////remotehost/share/dir/file.txtfile://remotehost/share/dir/file.txt
ファイルURLは、特定のファイルが指定されたホストまたはローカルコンピュータ上に存在することが分かっている場合にのみ役立つため、パブリックインターネット上のウェブページではほとんど使用されません。また、ウェブブラウザは、セキュリティ上の理由から、ファイルURLから読み込まれていないウェブページでは、ファイルURLを無効にするのが一般的です。[ 9 ]
ホスト指定子は外部ソースからファイルを取得するために使用できます。ただし、具体的なファイル取得プロトコルは規定されておらず、ホスト指定子の解釈も十分に標準化されていないため、特定の状況でのみ有用です。
Web ページが、Web ブラウザーが実行されているコンピューターに保存されているファイルにアクセスする場合、ファイル URL の最新の代替手段はHTML5 ファイル APIです。