- - PR -
ファイルの読み込み
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-09-12 00:41
いつもこちらでお世話になっています。今回もよろしくお願いします。
現在悩んでいる箇所なんですが、ファイルの制御で悩んでいます。 状況としては、filestreamでファイルをオープンしておいて、とりあえずそのインスタンスは置いておきます。その後、別のインスタンスで同じファイルを開こうと思っています。前者をファイル1、後者をファイル2とします。 前者は、ファイルの書き込みをできる状態で。 後者は、ファイルの読み込みだけできる状態で。 ファイルオープンのモードや排他制御できるようにしているつもりなんですが、うまく2つ目をオープンできません。現在はこんな感じになっています。 Private f1, f2 As System.IO.FileStream fs1 = New FileStream("c:\test.txt", FileMode.Open, FileAccess.Read,FileShare.Read) fs2 = New FileStream("c:\test.txt", FileMode.Open,FileAccess.Read) FileShareもRead権限を与えているので読むだけならできると思うのですが、エラーで終了してしまいます。 「エラー内容はプロセスはファイル "c:\test.txt" にアクセスできません。このファイルは別のプロセスが使用中です。」 何かほかにも権限を与えないと駄目なのでしょうか。 よろしくお願いします。 ファイルのオープンの仕方はFileStreamを使用したいと思っています。前者はFileStreamで必ず開きたく思っています。後者は別の方法でも良いかと思っていますが、できれば合わせたく思っています。 | ||||
|
投稿日時: 2005-09-12 02:45
南部です。
落ちつきましょう。 まず、説明とサンプルが噛み合っていませんが、 fs1 = New FileStream("c:test.txt", FileMode.Open, FileAccess.Write, FileShare.Read) とします。 この場合、f2がファイルを開くための必要条件は、 1.アクセス指定が、FileAccess.Read(fs1のFileShareがReadだから) 2.共有方法が、FileShare.Write(fs1のFileAccessがWriteだから) になります。 FileShareの定数は 「同一のファイルに対してほかの FileStream が 保有できるアクセスの種類を制御する定数」 です。 ※FileStreamコンストラクタでの既定値はFileShare.Readです。 | ||||
|
投稿日時: 2005-09-12 08:03
南部さん、ありがとうございます。
確かに、少し落ち着いた方が良かったです。 いろいろ試す内にとんでもないプログラムを書いていました。 的確なアドバイスありがとうございます。 |
1