
RandomAccessFileを使用して、ファイルをアクセスすると「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」のメッセージが出力されるときがある。
以下は例です。
<pre>
DataInputStream index = null;
RandomAccessFile data = null;
long seek = 0;
int row = 0;
try {
index = new DataInputStream(new FileInputStream(new File("index.db")));
data = new RandomAccessFile("data.db", "rw");
byte[] buffer = new byte[32];
while (true) {
++row;
seek = index.readLong();
data.seek(seek);
data.read(buffer);
}
} catch (EOFException e) {
} catch (IOException e) {
System.err.println(String.format("[%d]: seek=%d -- エラーの発生したレコード番号.", row, seek));
e.printStackTrace();
} finally {
if (index != null) {
index.close();
}
if (data != null) {
data.close();
}
}
</pre>
エラーが発生するレコード位置(row)は、まちまちで実行する度に変化する。
1000件目であったり、157件目であったり。。。
index.dbは約100万件あります。
(a).正常に動作する環境
OS: Windows XP、Windows 7
CPU: Core 2 Duo、CORE i5
(b).エラーが発生する環境
OS: Windows server 2008 R2 standees sp1
CPU: Intel(r) Xeon(r) CPU X5690@3.46GHz (2プロセッサ)
どういった原因が考えられますか?
因みに、RandomAccessFileのモードを"r"にすると正常に動作しました。
モードで排他ロックするのでしょうか?
RandomAccessFile#getChannel().lock()は使用していません。
(a)の方は最大4コアで、(b)の方は24コアあります。
(b)の方が早すぎてリードにブロックされているとかありますか?
ただモードを変更しただけで正常に動作するのも理解できません。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SWTとSwingの違い
-
VB6.0で作ったプロジェクトが起...
-
java ファイル出力 Cドライブ直下
-
Access クエリ実行が急に非常に...
-
なぜプロセスはファイルにアク...
-
VBAでMP3を鳴らしたい
-
サンドボックス内のマルウェア...
-
javascriptでのファイル操作に...
-
コンポーネント`MSCOMM32.cox'...
-
OLE又はDDEを使うVISUAL BESIC...
-
C言語初心者の質問失礼します。
-
バイナリ形式のXMLファイルを読...
-
C言語でBMPファイルの内容を表...
-
vba ActiveSheet.pasteを使った...
-
OpenDialog1->FileNameについて
-
FTPでputすると空ファイルが出...
-
どんなプログラムを書いても指...
-
「UNCパスはサポートされません...
-
フルパスから最後のディレクト...
-
LSI C-86 v3.30c 試食版について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
OLE又はDDEを使うVISUAL BESIC...
-
c/c++ ビルドしたにもかかわら...
-
コンポーネント`MSCOMM32.cox'...
-
VB6.0で作ったプロジェクトが起...
-
実行ファイルと実行モジュール...
-
64bit環境で32bitのodbc参照
-
jarファイルとjava.exeの関連付...
-
VBAで他のプログラムが起動して...
-
jarの開き方を教えてください。
-
VBAでMP3を鳴らしたい
-
VC++から引数付きexeファイルの...
-
JavaScriptでコマンドプ...
-
コマンドプロンプトで外のexeや...
-
WScript.Echo と msgbox
-
VBAでEXEファイルを動かす方法...
-
VBS形式ファイル:ダブルクリッ...
-
ネットワーク越しのEXEファ...
-
なぜプロセスはファイルにアク...
-
C言語で計算したファイルをsma4...
おすすめ情報