特定ファイルの別プロセス利用を確認する方法

このQ&Aのポイント
  • CSVやPDFファイルを作成する処理中に、別のプロセスでファイルが利用されているかを確認したいです。ファイル作成前に利用状況をチェックし、例外を発生させたいです。
  • ファイルの書き込み処理の前に、手作業や他のプロセスでファイルが使用されているかどうかを事前に確認し、利用されている場合はFileNotFoundExceptionの例外を発生させたいです。
  • CSVやPDFファイルの作成処理中に、別のプロセスでファイルが使用されているかどうかを確認したいです。ファイルが利用されている場合は、ファイル作成処理の前に例外を発生させたいです。
回答を見る
  • ベストアンサー

特定ファイルが別プロセスで利用されてるかを知りたい

CSVやPDFファイルを作成する処理があります。 このファイル作成処理は、同じパス、ファイル名で何度か上書きで書込む可能性があります。 また、手作業でファイルを開いたり操作する事があります。 ファイルを作成する時に、ファイルが手作業など別プロセスで使用されてた場合 FileNotFoundException の例外が発生してしまいます。 ファイル作成までにとても時間が掛かる事もあり、 ファイル作成処理の前に、あらかじめ別プロセスで利用されてるかどうかを 確認して、利用されてる場合は事前に例外にしたいのですが、 そのような事は可能でしょうか? (尚、先程一旦質問しておりましたが、内容に誤りがあった為書き直しています。)

  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

例外が発生するなら、それで判断したらどうですか? ただ、手作業で開くこともあるということだと、微妙なタイミングがあったり難しいことになりそうな気がします。 処理の方法を考え直したほうがいい気がします。

evaag777
質問者

お礼

ご回答、どうもありがとうございました。 処理の方法は検討中です。 変更しない可能性もあります。

その他の回答 (1)

回答No.1

最初に必要なファイルを全て使用中にしておけばよいのではないでしょうか。 事前にチェックしてもその後使われてしまうと言うことは考えられます。

evaag777
質問者

お礼

ご回答どうもありがとうございました。

evaag777
質問者

補足

事前チェック後に、そのファイルが使われるという事は、 業務的な都合上ですが、ありません。 使用中かどうかを事前に確認したいと言う感じですが、 使用中にする事で可能でしょうか?

関連するQ&A

  • 特定のファイルを他のプロセスが編集中か確認する方法

    VBScriptで指定フォルダにあるファイルに対して処理を行っています。 その指定フォルダにファイルがコピー中であったり、 他のプロセスがファイルを作成中だったりする場合、 このスクリプトを実行すると、コピー中や作成中のファイルに対して処理を行ってしまうため、 正しく処理ができません。 コピー中だったり、他のプロセスが作成や編集を行っている場合、 そのファイルに対しては処理を行わず、次回実行時に編集中でなければ 処理を行うようにしたいと思います。 コピー中だったり、他のプロセスが作成や編集を行っているかどうかを VBScriptで識別する方法を探したのですが、分からなかったため、教えてください。 なお、ファイルは数GBのものが多く、他プロセスが作成を行っている場合、 30~3時間程度行っています。

  • プロセスはファイルにアクセスできません、と出ます

    Windows7、I・E8です。 HTMLソースを修正し、「上書き保存」を押すと “プロセスはファイルにアクセスできません。別のプロセスが使用中です”と出ます。 なので、今はHTMLファイルを一旦タスクトレイに落し、「名前をつけて保存」ダイヤログや ブラウザなどは「×」で閉じ、再びHTMLファイルを戻し、「上書き保存」を押している有様です。 このような作業ではイライラするばかりで捗(はかど)りません。 何か回避策などいい方法はありませんか。

  • プロセスはファイルにアクセスできませんと表示

    Windows7、I・E8です。 HTMLソースを修正し、「上書き保存」を押すと “プロセスはファイルにアクセスできません。別のプロセスが使用中です”と出ます。 なので、今はHTMLファイルを一旦タスクトレイに落し、「名前をつけて保存」ダイヤログやブラウザなどは「×」で閉じ、再びHTMLファイルを戻し、「上書き保存」を押している有様です。 このような作業ではイライラするばかりで捗(はかど)りません。 何か回避策などいい方法はありませんか。

  • エクスプローラから開かれるWordを別プロセスにするには

    VC++2008にてプログラムを作成しています。 自作プログラム(疑似エクスプローラ)にて、 WordやExcelファイルをCreateProcessにて オープンし、WaitForSingleObjectにて ファイルが閉じられるまで待機。 ファイルが閉じられたら、終了処理という流れのシステムを 作成しています。 自作プログラムからオープンする際は、 Officeのコマンドラインオプションを用いて 別プロセスで起動するようにしていますので、 自作プログラムからWord(またはExcel)ファイルを 複数開いても、個別プロセスになるので、 各ファイルが個別に終了処理を行えるようになっています。 (なっていると思っていた) 問題は、自作プログラムからWord(a.doc)を開き、 エクスプローラから別ファイルのWord(b.doc)を開いた際、 b.docは個別にプロセスが作成されず、 a.docで作成した1プロセスにまとめられてしまうことです。 そのため、a.docを閉じても、b.docが開いている限り、 終了処理に移行しません。 APIフックにて、CreateProcessを引っ掛けてみたのですが、 エクスプローラからのファイルオープン時には 呼ばれていないようで、自作プログラム外で ファイルオープンをした際に、強制的に独自プロセスで 起動する方法が分りません。 自作プログラム起動時に限り、Word,Excelのファイルを 独自プロセスで開かせたいのですが、 解決方法はありますでしょうか? よろしくお願いします。

  • ファイルをロックしているプロセスを特定する方法

    Windows Vistaを使用しています。 あるファイルを削除しようとしたところ、  別のプログラムがこのファイルを開いているので、操作を完了できません というエラーメッセージが出ます。 どのプロセスがこのファイルを操作しているのかを知りたいのですが、どうすればよいでしょうか? おそらく、何かのプロセスがこのファイルをロックしているものと考えています。 Windowsの標準機能で解決できるならその方法を、別のフリーソフトを利用すればわかるのならその方法を教えてください。 どのプロセスかが分かれば、そのプロセスを強制終了させればファイルの削除が行えると考えています。 よろしくお願いします。

  • vbaで別プロセスのexcelファイルを起動

    ネット上で探したのですが見つからなかったので教えてください。 質問したい内容は以下の質問と同じような内容ですが、以下のページでは答えは出ていなかったみたいです。 http://soudan1.biglobe.ne.jp/qa5502114.html 【質問】 単純にWorkbooks.addや.openとしてしまうと同じプロセスからエクセルファイルを開いてしまいます。 別プロセスでファイルを開く方法を教えてください。 ※注意  上記の質問でも起こっていますが、この質問だと質問内容の食い違いが起こってしまう可能性があります。 【詳細】 簡単に言い直すと別ウィンドウでエクセルをvbaから開く方法を教えてください。 手で同じことを行う場合はまず普通にエクセルファイルを開き、次にwindowsスタートメニューからエクセルを開くとこれが実現できます。 別の方法として、vbaからvbs等の別のプログラムを呼び出して、ファイルを開く事で実現はできましたが、できればvba内で完結させたいです。 方法のご教授をお願いいたします。

  • C#でファイルを作成して処理を渡す

    C#でプログラムを組んでいます。 やりたい処理は、 (1)あるCSVファイル(例:aaa.csv)を作成して、 (2)その作ったCSVファイルを読み込んで別プログラムに渡す処理をする。 です。 CSVファイルが確実にできてから、(2)をしたいのですが、 どうやって確実にできたかを判断すればよいでしょうか? そのまま(1)→(2)と書くと、時々CSVファイル作成前に(2)をしてしまって、 うまくいきません。 CSVの作成時間がまちまちなので、sleepのように時間を固定で持ちたくはありません。 よい方法があったら教えて下さい。 ※ちなみに何故そんな処理をするのかはここでは話題にしないで下さい。

  • 外部ファイルから特定の値を取り出して、値ごとに新しいファイルを生成して書き込むには?

    こんにちわ。質問させてください。 ひとつのCSVファイルがあります。1列目の先頭の値はランダムねアルファベットです。 aという値が先頭にある列は、a.csvを生成して、a.csvにaの行を書き込みます。b,cも同様にb.csv,c,csvを生成して書き込みます。 要するに一枚のファイルから値ごとに新しいファイルを生成して書き込みをしたいのです。新しくできたファイルは追加書き込みをしないでの上書きモードです。substr関数を使って値を取り出すまではわかるのですが、そこからの処理がわかりません。どうぞ教えてください。よろしくおねがいします。

    • ベストアンサー
    • Perl
  • プロセスについて

    アプリを起動するとプロセスが発生すると思うのですが、そのプロセスはまず仮想メモリアドレス空間に待機しその後物理メモリにて処理され、いっぱいだった場合はページングファイルが使われると思います。 その場合、1つのアプリでのプロセスが物理メモリとページングファイルに分かれることはあるのでしょうか?

  • CSVファイルを列ごとに読み込む処理について

    はじめまして。 よろしくお願いいたします。 プログラミングに興味をもち、JAVAに触れている者です。 現在eclipseでCSVファイルを列ごとに読み込んで表示する、というプログラムを作成しているのですが、コンパイルエラーを除去することができません。 エラー内容は 「処理されない例外の型 FileNotFoundException」 です。 これを見る限りでは読み込むファイルがないということらしいのですが、CSVファイルはちゃんと作成し、作成中のプログラムのファイルがあるディレクトリに置いてあります。 原因を探したいのですが、eclipseのこともjavaのこともよくわかっていないため、まるで見当がつきません。 どうかご教示をお願いいただけませんでしょうか? 以下が作成中のプログラムです。 package ioTest; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import java.io.FileInputStream; public class IOsample { public static void main (String[] args){ BufferedReader br = null; File csv = new File("sampleCSV.csv"); br = new BufferedReader( new InputStreamReader( new FileInputStream(csv))); while (br.ready()){ System.out.println(br.readLine()); } br.close(); } } レベルの低い質問で申し訳ありませんが、なにとぞよろしくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう