本文整理汇总了C++中FileList::WriteFile方法的典型用法代码示例。如果您正苦于以下问题:C++ FileList::WriteFile方法的具体用法?C++ FileList::WriteFile怎么用?C++ FileList::WriteFile使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FileList
的用法示例。
在下文中一共展示了FileList::WriteFile方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: create_new
void create_new(const char *dataname,const char *lstname)
{
FILE *f;
FileList list;
FileHeader header;
int n,i;
n=list.ReadList(lstname);
f=fopen(dataname,"wb");
write_header(f,&header);
header.number=n;
for (i=0;i<n;i++) {
list.WriteFile(f,i);
printf("Added\n");
}
header.offset=ftell(f);
list.WriteList(f);
write_header(f,&header);
fclose(f);
}
示例2: update_datafile
void update_datafile(const char *dataname,const char *lstname)
{
int old_number,new_number;
std::vector<FILE_LST> old_list(c_MaxFile);
old_number=read_lst(dataname,old_list);
if (old_number<0) {
printf("[%s] is Bad\n",dataname);
return;
}
FILE *f;
FileList list;
FileHeader header;
int i;
new_number=list.ReadList(lstname);
f=fopen(dataname,"rb+");
if (f==0) {
printf("[%s] can't update",dataname);
return;
}
list.ReadHeader(f,&header);
header.number=new_number;
int s;
for (s=i=0;i<old_number;i++) {
if (list.FindFile(old_list[i].uid)==-1) {
printf("A file[%x] (%d bytes) is deleted\n",old_list[i].uid,old_list[i].size);
delete_file(f,old_number,old_list,i);
++s;
}
}
if (s>0) {
printf("%d files deleted\n",s);
}
for (i=0;i<old_number;i++) {
int n;
if (old_list[i].uid==0) continue;
n=list.FindFile(old_list[i].uid);
assert(n>=0);
int space=old_list[i].size+old_list[i].space;
int size=file_size(list.GetName(n));
if (size>space) {
delete_file(f,old_number,old_list,i);
printf("[%s] deleted\n",list.GetName(n));
}
else if (size==old_list[i].size) {
if (list.NeedUpdate(f,n,old_list,i)) {
list.UpdateFile(f,n,old_list,i);
}
}
else if (size<=space) {
list.UpdateFile(f,n,old_list,i);
}
}
// 寻找文件尾
for (i=0;i<old_number;i++) {
if (old_list[i].uid==0)
continue;
if (old_list[i].offset+old_list[i].size+old_list[i].space==header.offset)
break;
}
if (i<old_number) {
header.offset=old_list[i].offset+old_list[i].size;
old_list[i].space=0;
list.ClearTail(old_list[i].uid);
}
fseek(f,header.offset,SEEK_SET);
for (i=0;i<new_number;i++) {
if (list.WriteFile(f,i,true))
printf("Added\n"); // 添加文件(见缝插针)
}
header.offset=ftell(f);
list.WriteList(f);
write_header(f,&header);
fclose(f);
}