dtmpl / filedb


filedb.d

コメント

  • サンプルをもっと分かりやすく。 -- sakurai? 2004-10-15 (金) 18:01:45
  • エラー処理を分かりやすく -- sakurai? 2004-10-15 (金) 18:01:56
  • qGQxAeiczAgBukqnnq? -- pxblwhd? 2008-08-28 17:54:16 (木)

目次

class FileDB

サンプル

import filedb;
void main()
{
	char[] s;
	static int[] a=[1,256];
	for(int k=0;k<a.length;k++){
		try{remove("filedb.bin");}catch(Exception e){}
		printf("test tablesize=%d\n",a[k]);
		int starttime = getUTCtime();
		for(int i=0;i<1000;i++){
			s =  std.string.toString(i);
			FileDB.addDBFile("filedb.bin",a[k],s);

			char[][] data = FileDB.readDBFile("filedb.bin",0,10);
			int size=0;
			try{size=cast(int)getSize("filedb.bin");}catch(Exception e){}
			printf("size=%d filesize=%d\n",data.length,size);
			for(int j=0;j<data.length;j++){
				printf("%.*s\n",data[j]);
			}
		}
		int endtime = getUTCtime();
		printf("time=%d\n",endtime-starttime);
	}
	printf("ok\n");
}

static bool addDBFile(char[] filename, int addressSize, char[]data)

データ追加

  • filename ファイル名
  • addressSize ヘッダ部分に最初に用意する、テーブルのサイズ。データ件数が満タンになるとファイルに新たに追加されるテーブルのサイズもこの値で決まる。
  • data ファイルに保存するデータ

ファイルに指定データを保存します。

指定ファイル名がなければ生成します。生成時にはaddressSizeで指定した分だけヘッダ情報のテーブルを作成します。

データの追加に成功した場合は、trueを、 データの追加に失敗した場合は、falseを返します。


static bool removeDBFile(char[] filename, int offset)

データ削除

  • filename ファイル名
  • offset データ削除No

指定データ削除Noのデータを指定ファイル名のファイルから削除します。

内部の処理としては、ファイルのテーブルにある、削除フラグを立てます。

削除できればtrueを、削除できなければfalseを返します。

static char[][] readDBFile(char[] filename,int offset,int size)

データ読み出し

  • filename ファイル名
  • offset データ読み出し開始位置
  • size データ読み出し数

指定ファイル名のファイルから、指定読み出し開始位置から、データ読み出し数分のデータを読み込み、返します。

データのサイズが、指定データ読み出し数よりも、少ない場合は、読み出せるだけ読み出し手返します。

まったく読み込めなかった場合は、サイズが0のchar[]配列を返します。

static int readSize(char[] filename)

データサイズ取得

  • filename ファイル名

指定ファイル名内にあるデータの数を返します。

void main()

テスト用の関数です。

dmd src/filedb -version=FILEDB_TEST

としてコンパイルした場合に実行されます。

*MenuBar

人気の10件

  • counter: 3596
  • today: 1
  • yesterday: 0
  • online: 1