Javaデモ/JSPages「ファイル入出力、ファイル・ロック」:「RandomAccessFile、FileChannel、Charset、ByteBuffer」(Ver.2)
開発環境はEclipseです。 Eclipseにおいてサーバー・サイド用Javaプロジェクトを作る場合は「動的Web」でプロジェクトを作る必要が有ります。 「動的Web」プロジェクト作成時には、必ず「web.xmlデプロイメント記述子の生成」チェックボックスをチェックしてして下さい(下記参照)。 Webアプリ向け開発手順 http://www.javaroad.jp/opensource/js_eclipse6.htm 現在、文字エンコードは多数ありますが、「UTF-8、Shift_JIS」の2つがインターネットでのデファクト・スタンダードですが、Windowsの場合はShift_JISとは微妙に違うMS932(CP932)がデファクト・スタンダードになります(なのでWindowsにおいてShift_JISと言う場合は、基本的にMS932(CP932)を意味します)。 指定されている文字エンコードとセーブ時の文字エンコードが違うと全角文字が文字化けするので注意して下さい。 【このデモの略説】 新規データをファイルの先頭に追加して行きます。 サーバー・サイドの場合、多数のユーザーが同時にアクセスした場合を考慮する必要があります。 具体的にはサーバー・サイドの場合は、ファイル出力時にファイルをロックしないとデータ破壊される危険性があります。 また ファイルの書き換え(ファイル入力してファイル出力する)は、ファイル入出力を一体としてロックしないとデータ破壊される危険性があります、つまり ファイル入力とファイル出力でファイル・ロックを2つに分けるとファイル・データが破壊される危険性があります。 下記デモでもファイル入力とファイル出力でファイル・ロックは1つだけだと言うことに注意して下さい。 try-with-resources文を使っているので自動クローズがサポートされるので、クローズを明記する必要は有りません。 クローズすると自動的にロックも解除されるので、ロックの解除も明記する必要は有りません。 「oRWChannel.truncate(0);」は一旦ファイル・サイズをゼロにしています。 そうしないと(記事を削除した場合など)以前よりファイル・サイズを小さくしたい場合に、前のデータが残ってしまいます。 【WebContent/MyJSPages.jsp】 ※既存の「We...