
はじめまして。
初心者ですが、今非常に困っております。
RandomAccessFileを使用して、ファイルの排他をしたいのですが・・・。具体的に言うと、AがAAA.xmlをOPEN中にBがAAA.xmlをOPENしようとするとAがOPEN中なので、例外処理に飛ばしたいのです。いくら試みても例外処理に飛びません。
<例>(java version "1.3.1.05")
try
{
raf = new RandomAccessFile("AAA.xml","rw"); // OPEN
raf.writeBytes(111); // WRITE1
raf.writeBytes(222); // WRITE2
raf.writeBytes(333); // WRITE3
raf.writeBytes(444); // WRITE4
raf.writeBytes(555); // WRITE5
raf.close(); // CLOSE
}
catch(IOException e)
{
// 排他制御に失敗. リトライしたい
System.out.println("別のプロセス?が使用中")
}
心当たりのある方がいらしゃいましたら、ご協力お願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
JDK1.3 で排他制御を行うなら、参考URLにある「Singleton」パターン辺りを応用して、
こんな感じで自前で実装されてはいかがでしょうか?
なお、実際に動かしたわけではないですし、あくまで
簡単な例です。使うときには、もっと考えてください。。。
public FileLock {
private static RandomAccessFile raf = null;
synchronized static public RandomAccessFile open(String file, String mode)
throws IOException {
if( raf == null ) {
raf = new RandomAccessFile(file, mode);
return raf;
}
else {
throw new IOException("別プロセスが利用中");
}
}
synchorized public static void close() {
raf.close();
raf = null;
}
}
参考URL:http://www.dmz.hitachi-sk.co.jp/Java/Tech/patter …
No.2
- 回答日時:
RandomAccessFile を使ってファイルを読み書きするだけでは、ファイルをロックしたことにはなりません。
これは、FileInputStream や FileOutputStream などを使っても同じです。Java のバージョン 1.4 では、ファイルの排他制御に関するクラスが提供されています。
RandomAccessFile#getChannel() で FileChannel オブジェクトを取得し、その lock() メソッドを使ってロックします。
バージョン 1.3 では、残念ながらファイルの排他制御はできません。
No.1
- 回答日時:
JavaはOSやプラットフォームに依存しないように設計された言語ですが、ファイルの指定はOS固有の方法に依存します。
また現時点でファイルに対する排他制御(ロック)の機能は提供されていません。お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- 英語 どちらが正しい英訳か教えて下さい 3 2022/06/24 17:32
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Perl perlのflock関数でロックをかけたままopen関数で何度もファイルを開きなおすことはできますか 3 2023/05/01 22:25
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- WordPress(ワードプレス) ワードプレスにて .xmlファイルの使い方をご存知の方、よろしくお願いいたします。 2 2022/09/30 00:55
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- 英語 None of it or them 1 2022/04/24 10:57
- アプリ おすすめのパスワード管理アプリを教えてください。(iOSとWindows対応) 4 2023/01/19 02:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
dllって?
-
Eclipseで検索ができなくなった
-
Office文書などの検索方法
-
アスキーコードまたはエスケー...
-
HTMLテキストリンクでExcelファ...
-
0バイトのテキストファイル
-
JavaでPDFファイルに変換するに...
-
windows 環境でのファイル操作...
-
ファイルアップロードについて
-
ファイルの排他について
-
【VBA】印刷マクロのループ処理...
-
VB6.0のメモリリークについて
-
CSVファイルの時刻の形式について
-
データ変換
-
バイナリデータの中からMidのよ...
-
iTextでPDFを表示させたら日本...
-
既存のテキストファイルを開く方法
-
コマンドプロンプトのテキスト...
-
ACCESSのCSV出力に関して
-
ATTファイルってどうやって開け...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0バイトのテキストファイル
-
Eclipseで検索ができなくなった
-
【Excel VBA】取り込んだファイ...
-
C++.NET 2003 「空のドキュメ...
-
HTMLまたはJavaScriptでフ...
-
VBAで、JPG写真の撮影日時を読...
-
main関数のコマンドライン引数...
-
HTMLテキストリンクでExcelファ...
-
ファイル作成日時と更新日時を...
-
リソースファイルを認識してく...
-
Javaのファイルダウンロードに...
-
2GB以上のファイルを扱う方法
-
C#について質問【複数の.datフ...
-
ディレクトリのサイズの取得
-
PHPからベーシック認証のかかっ...
-
<input type="file" で初期値...
-
VB2008 iniファイルの全セクシ...
-
教えて下さい。
-
サイトマップにサブドメインを...
-
vbaの構文の修正相談(xmlファ...
おすすめ情報