環境 XPpro .NET2003 MFC
基本的なことなのかもしれませんが...。
CFile fp( csFilePath, CFile::modeWrite | modeCreate );
これでは、ファイルが読み取り専用の場合アボートするようです。
何かの拍子にファイルに読み取り専用フラグがたつ場合があり、
これを無視して書込みたいのですが、何か対処方法ありますでしょうか?
よろしくお願いします。
>何かの拍子にファイルに読み取り専用フラグがたつ場合があり
よくわからないけど、フラグにShareDenyNoneを指定してみるとか?
>アボートするようです。
というか、CFileExceptionが発生しているのでは?
SetFileAttributes でフラグを外してからファイルを開くとか。
そもそも、その「何かの拍子に読み取り専用フラグが立つ」原因を特定するのが先じゃないか。
CDに焼いてからHDDにコピーしたとか考えられるけど、本当に書き込んでほしくなくて読み取り専用になっているという可能性はあり得ないの?
>よくわからないけど、フラグにShareDenyNoneを指定してみるとか?
すでに試してみましたが、ダメでした...。
>というか、CFileExceptionが発生しているのでは?
たしかにCFileExceptionが発生していました。MSDNで調べてみましたが
対処法がよくわかりませんでした...。
>SetFileAttributesでフラグを外してからファイルを開くとか。
SetFileAttributesでOKでした。
読み取り専用フラグがたつというのは、自分はSourceSafeでプロジェクトを管理しているのですが、そこから取得するとこのフラグが必ずたち、アボートするので原因を調べていた感じです。使うファイルはこちらが提供するファイルで、このフラグがたっているとも限らないのですが、もしものことを考えて対処法を考えていました。
プログラム上でフラグを勝手にとるのもまずいかとも言えますが、アボートするのもと考えて...。
ツイート | ![]() |