
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で質問しましょう!
似たような質問が見つかりました
- PHP PHPSpreadsheetによる書き出し時のページネーション方法について 1 2023/03/20 10:35
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Ruby No route matches [GET] "/posts/5/destroy" 1 2022/03/24 13:00
- Visual Basic(VBA) 列 A に同じ日が2つが必要です。 1 2023/03/28 07:25
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
Javaの質問です
-
windowsでキー入力を拾うバッチ
-
OLE又はDDEを使うVISUAL BESIC...
-
ファイル名の先頭が数字だと駄...
-
JavaScriptでコマンドプ...
-
JARファイルをEclipseを使って...
-
batからexeを実行し戻り値を受...
-
c/c++ ビルドしたにもかかわら...
-
JAVAでつくったプログラムはコ...
-
exeファイルで実行できない
-
WScript.Echo と msgbox
-
Javaのexeファイルをコードに戻...
-
exewrapで変換したexeファイル...
-
a.outはどこへ?
-
VB6で、C言語の(argv,argc)み...
-
eclipseで作ったプログラムを他...
-
64bit環境で32bitのodbc参照
-
なぜプロセスはファイルにアク...
-
jarファイルとjava.exeの関連付...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
JavaScriptでコマンドプ...
-
OLE又はDDEを使うVISUAL BESIC...
-
c/c++ ビルドしたにもかかわら...
-
VBAでEXEファイルを動かす方法...
-
コマンドプロンプトで外のexeや...
-
VC++から引数付きexeファイルの...
-
コンポーネント`MSCOMM32.cox'...
-
VBAで他のプログラムが起動して...
-
JARファイルをEclipseを使って...
-
ローカルのHTMLからexeファイル...
-
JAVA .jarファイルに再圧縮する...
-
以下のように複数のファイルを...
-
実行ファイルと実行モジュール...
-
64bit環境で32bitのodbc参照
-
LINK : fatal error LNK1104に...
-
VB6.0で作ったプロジェクトが起...
-
jarの開き方を教えてください。
-
ネットワーク越しのEXEファ...
-
eclipseで作ったプログラムを他...
おすすめ情報