1

タイトルは些細なことのように思えるかもしれませんが、これは思ったほど簡単ではありません。ファイルが存在しない可能性があり、ファイルを作成してから書き込むために必要な権限を持っている可能性があるため、ファイルの権限を確認することはできません。ただし、ディレクトリに対する書き込み権限、実行権限、およびすべての親ディレクトリに対する権限がある場合に限ります。またはそうでないかもしれません。わからない。

では、ファイル名が与えられた場合、そのファイル名でファイルを開いて書き込むことができるかどうかを正しくテストするために考慮する必要があるすべてのケースは何ですか? これは、特定のプログラミング言語に固有のものではありません。ロジックが欲しいだけです。ただし、実際のプログラミング言語での例は大歓迎です。

4

2 に答える 2

2

このようなテストは、必ずしも非常に役立つとは限りません。チェックと書き込み試行の間に何らかの理由でファイルが書き込み不能になった場合、競合状態に備えているだけです。(他のプロセスによって、アクセス許可が変更されたり、親ディレクトリが移動または削除されたり、デバイスの最後の空き領域が使い切られたりする可能性があります...)

先に進んで書き込みを試み、操作が失敗する可能性がある各ステップ (開く、各書き込み試行、閉じる) でエラーをチェックすることに熱心に取り組みます。

于 2011-02-21T05:45:55.807 に答える
0
  1. 所有者がそのディレクトリへの書き込み権限を持っているかどうかは、プログラムを実行するプロセスの所有者によって異なります。たとえば、www ユーザーとして実行されている apache は、root が所有するディレクトリに書き込むことができず、他のユーザーまたはグループのアクセス許可がない場合があります。

  2. ファイルを作成して成功したかどうかを確認するなど、適切なエラーコードをキャッチできず、アクセス許可がないかディレクトリがいっぱいではないなどの修正アクションを実行するなど、ヒットまたはトレイルの方法で実行できます。

  3. ディレクトリにスペースがある場合、ファイルが既に存在する場合など、ユーザーがディレクトリに書き込む権限を持っているかどうかをプログラムで確認できます。システムが公開し、言語が公開する特定の API を使用することで、失敗を処理するのではなく、ケースを処理するこのはるかに優れたアプローチケース。

于 2011-02-21T05:49:01.863 に答える