glib を使用して、2 つのファイルパスが同等であることを確認する必要があります。リダクションパスを介して、ずっと前にQtでそれを行いました。しかし、glib で同様の楽器を見つけることができません。誰かがこれを行う一般的な方法を提案できますか?
ありがとう
.
との使用を解決する「単純な」正規化のために、 GIO API の関数を使用して 2 つのオブジェクトを..
作成するだけです。次に、 を使用して 2 つのファイルを比較します。GFile
g_file_new_for_path()
g_file_equal()
GFile
これは、オブジェクトの作成時にパスの単純な正規化を行う GIO に依存していることに注意してください。シンボリック リンクは解決されません。ドキュメントには次のように記載されています。
識別子としての使用
GFile
には、同じファイルに複数のエイリアスが存在する可能性があるという点で、パスの使用と同じ弱点があります。たとえば、ハード リンクまたはソフト リンクによって、2 つGFile
の異なる が同じファイルを参照する場合があります。エイリアスのその他の原因としては、大文字と小文字を区別しないファイル システム、FAT/NTFS での短い名前と長い名前、または Linux でのバインド マウントがあります。GFile
2 つの が同じファイルを指しているかどうかを確認したい場合は、G_FILE_ATTRIBUTE_ID_FILE
属性を照会できます。GFile
は、渡されたパス名の些細な正規化を行うため、作成時に使用されるパス文字列の些細な違い (スラッシュの重複、パスの末尾のスラッシュ、「.」または「..」パス セグメントなど) によって異なるGFile
sが作成されないことに注意してください。 .
したがって、次の 2 段階のアプローチを実行できます。
g_file_equal()
。と表示されたらtrue
完了です。G_FILE_ATTRIBUTE_ID_FILE
比較します。