パスモジュールはオペレーティングシステムごとに異なります (Windows | posix)
windows
あなたはそれをよく知っているはずですが、posix
聞いたことがないかもしれません
posix(UNIXのポータブルオペレーティングシステムインターフェース)
posix は、一連の標準を定義するポータブル オペレーティング システム インターフェイスの略です。この一連の標準に準拠するオペレーティング システムは (unix、unix、linux、macOs、windows wsl など) です。なぜこの一連の標準を定義する必要があるのでしょうか。 Linux システムで開始するのと同じですか? プロセスはfork
関数を呼び出す必要があり、Windows でプロセスを開始creatprocess
する場合は関数を呼び出す必要があるため、問題が発生します。たとえば、Linux でコードを書いたので、それを Linux システムに移植する必要があります。 Windows では機能が統一されていないことがわかり、この問題を解決するために POSIX 標準が登場しました。
Windows は POSIX 標準に完全には準拠していません。Windows は、POSIX とは異なる方法でパスを表すように設計されています。
Windows システムでは、パスは\
パス区切り文字としてバックスラッシュ ( ) を使用します。これは、POSIX システムで使用されるスラッシュ () とは/
異なります。これは、以前の Windows オペレーティング システムでは異なる設計選択が行われてきた Windows システムの歴史によるものです。
Windows posixの違い
path.basename()
このメソッドは、指定されたパスの最後の部分を返します。
posix で Windows パスを処理する
path.basename('C:\temp\myfile.html');
// 返回: 'C:\temp\myfile.html'
返された結果は myfile.html に対応しません
posix システムで Windows パスを処理し、対応するオペレーティング システムのメソッドを呼び出す必要がある場合は、次のように変更する必要があります。
path.win32.basename('C:\temp\myfile.html');
myfile.html に戻る
パス.ディレクトリ名
この API は、basename を完全に補完します。
path.dirname('/aaaa/bbbb/cccc/index.html')
dirname API は、最後のパスを除いて /aaaa/bbbb/cccc を返します。
Basename API は最後のパスを返します。
パス.extname
この API は拡張子を返すために使用されます。たとえば、/bbb/ccc/file.txt は .txt を返します。
path.extname('/aaaa/bbbb/cccc/index.html.ccc.ddd.aaa')
//.aaa
が複数ある場合は最後のものを返します 拡張子がない場合は空を返します
パス.結合
この API は主にパスを接続するために使用されます
path.join('/foo','/cxk','/ikun')
// /foo/cxk/ikun
... ./ .../ 演算子をサポートできます
path.join('/foo','/cxk','/ikun','../')
// /foo/cxk/
パス.解決
相対パスを解決して返すために使用されます。绝对路径
複数の絶対パスが渡された場合は、右端の絶対パスが返されます。
path.resolve('/aaa','/bbb','/ccc')
// /ccc
絶対パス+相対パスで渡します
path.resolve(__dirname,'./index.js')
// /User/xiaoman/DeskTop/node/index.js
相対パスのみが渡される場合
path.resolve('./index.js')
// 返回工作目录 + index.js
パス.解析パス.形式
path.format と path.parse は完全に補完的です
parse
ファイルパスを解決するために使用されます。パス文字列を入力として受け取り、パスのさまざまなコンポーネントを含むオブジェクトを返します。
path.parse('/home/user/dir/file.txt')
{
root: '/',
dir: '/home/user/dir',
base: 'file.txt',
ext: '.txt',
name: 'file'
}
root
: パスのルート ディレクトリ、つまり/
。dir
: ファイルが存在するディレクトリ/home/user/documents
。base
: ファイル名、つまりfile.txt
。ext
: ファイル拡張子、つまり.txt
.name
: 拡張子を取り除いたファイル名、つまりfile
.
format は逆にオブジェクトを文字列に変換します。
path.format({
root: '/',
dir: '/home/user/documents',
base: 'file.txt',
ext: '.txt',
name: 'file'
})
// /home/user/dir/file.txt