tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルFileOpenについて
記事No4670
投稿日: 2006/12/14(Thu) 19:13
投稿者ライス
えーと、FileOpenで開いたテキストファイルの
まず内容を読み取り、その内容を少しいじくって上書き、の間に
他のプロセスから触れないように排他制御をかけたいので
一度もFileClose()せずに入力と出力を行いたいのですがどうしたらよいでしょうか?

[ツリー表示へ]
タイトルRe: FileOpenについて
記事No4672
投稿日: 2006/12/14(Thu) 19:31
投稿者花ちゃん
ヘルプで FileOpen 関数 の引数を調べて見て下さい。

[ツリー表示へ]
タイトルRe^2: FileOpenについて
記事No4674
投稿日: 2006/12/14(Thu) 19:49
投稿者ライス
レスありがとうございます。
引数は調べてるのですが、排他にすることはできました。
しかし、Fileopen()からFileClose()までに
 テキストを読み込む Input()
 テキストに書き込む WriteLine() の2つを使っていますが
OpenMode等をどう設定してもどちらかが必ず引っかかってしまいモードが違う、とエラーになります。
片方を実行した後に閉じてOpenModeを変更して開きなおしたらできますが、
閉じて開く間に他プロセスに入り込まれてしまう場合があります。
このような場合はどうしたらよいでしょうか?

[ツリー表示へ]
タイトルRe: FileOpenについて
記事No4673
投稿日: 2006/12/14(Thu) 19:34
投稿者ライス
あああ、すみません・・・
環境はWindows2000、VB.NET2005です。
よろしくお願いします。

[ツリー表示へ]
タイトルRe^2: FileOpenについて
記事No4676
投稿日: 2006/12/14(Thu) 22:53
投稿者花ちゃん
色々方法はあるかと思うのですが

1.読み込む前にファイル名を変更する
2.変更したファイルを読み込む
3.元のファイル名で書き込みモードで開く
  (同時に両方のファイルをロックモードで開く)
4.ファイル名を変更した分は不要になった段階で削除する

又は、読み込んだ後、ファイルを一旦削除してしまう。
編集後新たにファイルを作成書き込む

[ツリー表示へ]
タイトルRe^3: FileOpenについて
記事No4684
投稿日: 2006/12/15(Fri) 11:59
投稿者ライス
なるほど、こういう発想はありませんでした・・・
今回は前者の方法でやってみました。
ファイル名を変更し終えた直後に他からアクセスあった場合に、
ファイルが存在しないことになりそうなのでここだけファイルが無い場合に
リトライをかけるようにしてみたところ全てうまくいきました。
花ちゃん様、ご指導ありがとうございました。

[ツリー表示へ]