
はじめまして。
初心者ですが、今非常に困っております。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0バイトのテキストファイル
-
openglで音楽を再生する
-
ファイルの排他について
-
Accessで一覧を表示するWebペー...
-
main関数のコマンドライン引数...
-
ネットワーク上のファイル
-
VBAで、JPG写真の撮影日時を読...
-
【Excel VBA】取り込んだファイ...
-
【VBA】印刷マクロのループ処理...
-
accessでクエリをExcelにエクス...
-
CSVファイルの時刻の形式について
-
テキストファイルの一部分を抽...
-
StreamReaderで読み込んだファ...
-
テキストファイルの特定行の削...
-
C言語のソースからコメントを抜...
-
CList, CArchive, CFileの組み...
-
VBA 参照先で選んだファイルを...
-
Acrobat参照設定
-
WORDのVBAで差し込み印刷時、デ...
-
別のサーバーのテキストファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0バイトのテキストファイル
-
【Excel VBA】取り込んだファイ...
-
Eclipseで検索ができなくなった
-
VBAで、JPG写真の撮影日時を読...
-
HTMLテキストリンクでExcelファ...
-
VB6.0のメモリリークについて
-
Appletにて入力文字のファイル...
-
C++.NET 2003 「空のドキュメ...
-
VB2008 iniファイルの全セクシ...
-
windows 環境でのファイル操作...
-
dllって?
-
パスワード設定のタグについて
-
ファイルを取得するC#のプロ...
-
main関数のコマンドライン引数...
-
Accessで一覧を表示するWebペー...
-
ファイル作成日時と更新日時を...
-
【VBA】印刷マクロのループ処理...
-
携帯電話への動画配信
-
ファイル内容を比較する方法
-
Javaのファイルダウンロードに...
おすすめ情報