#include #include #include #include #include #include #include #include #include // 讀檔案類
class cfilereader
~cfilereader()
bool open(const char* filepath)
// 取得檔案大小,以便一次性將檔案讀取出來
struct stat st;
if (-1 == fstat(fd, &st))
// 分配足以容納整個檔案的buffer
// 由於以o_direct方式讀取,所以需要按頁對齊
size_t size = st.st_size + (getpagesize() - st.st_size%getpagesize());
posix_memalign((void**)&_buffer, getpagesize(), size);
if (null == _buffer)
// 將整個檔案讀取_buffer中
int bytes_read = read(fd, _buffer, size);
if (-1 == bytes_read)
else if (bytes_read != size)
return true;
} // 從檔案中讀取乙個節點資料
// offset:偏移量
// return:返回指向記錄的指標
template const p* get_record(uint64_t offset) const
// 取得檔案所有的記錄
template const p** get_all_record() const
private:
char* _buffer;
};// 用於計時
class timewatcher
~timewatcher()
private:
std::string _tip;
time_t _now_msec;
};struct user
;// 用於生成測試檔案
bool make_test_file(const char* filepath, int num_records)
user user;
timewatcher time_watcher("write");
for (int i=0; i(index[i]); }}
// 執行測試
void test()
} random_read(file_reader1, 1000000);
random_read(file_reader1, 3000000);
cfilereader file_reader2;
}random_read(file_reader2, 1000000);
random_read(file_reader2, 3000000); }}
int main(int argc, char* argv)
檔案讀取方式
過程 1.開啟檔案 2.讀資料 3.關閉檔案 1,w 寫模式,它是不能讀的,如果用w模式開啟乙個已經存在的檔案,會清空以前的檔案內容,重新寫 w 是讀寫內容,只要沾上w,肯定會清空原來的檔案 2,r 讀模式,只能讀,不能寫,而且檔案必須存在 r 是讀寫模式,只要沾上r,檔案必須存在 3,a 追加模式...
ByteArray 示例 讀取 zip 檔案
原文 本示例中所編寫的 僅用於分析不包含資料夾且不需要資料描述符記錄的 zip 檔案。它將忽略最後乙個檔案的資料後面的所有資訊。每個檔案的檔案標頭的格式如下 檔案標頭簽名 4 位元組 所需版本 2 位元組 一般用途位標記 2 位元組 壓縮方法 2 位元組 8 deflate 0 uncompress...
PHPExcel讀取excel檔案示例
author xiaoqiang.wu version 1.01 error reporting e all date default timezone set asia shanghai phpexcel iofactory require once classes phpexcel iofact...