-
Notifications
You must be signed in to change notification settings - Fork 0
/
MyDisk.c
72 lines (67 loc) · 1.52 KB
/
MyDisk.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include<stdio.h>
#include"MyDisk.h"
void showMyDisk(MyDisk *disk)
{
int i=0;
printf("freeInodes=%d\nfreeBlocks=%d\n",disk->superB.freeInodes,disk->superB.freeBlocks);
printf("blockUsedMap :\n");
while(i<BLOCK_NUM)
{
printf("%d ",disk->blockUsedMap[i]);
if(!((i+1)%32))
printf("\n");
++i;
}
printf("\nLast Time Your Visited: %d-%d-%d %02d:%02d\n",
disk->gm_date.tm_year+1900,
disk->gm_date.tm_mon+1,
disk->gm_date.tm_mday, disk->gm_date.tm_hour+8,
disk->gm_date.tm_min);
}
void setDate(MyDisk *disk)
{
struct tm *t;
time_t seconds;
time(&seconds);
t=gmtime(&seconds);
disk->gm_date.tm_mon=t->tm_mon;
disk->gm_date.tm_mday=t->tm_mday;
disk->gm_date.tm_year=t->tm_year;
disk->gm_date.tm_hour=t->tm_hour;
disk->gm_date.tm_min=t->tm_min;
}
void readDisk(void * obj,int len,int num,int startPos)
{
FILE *diskFile;
if((diskFile=fopen(DISK_NAME,"rb+"))==NULL)
{
printf("fail to access your disk!\n");
system("pause");
exit(0);
}
else
{
// printf("read disk!\n");
fseek(diskFile,startPos,SEEK_SET);//定位文件指针到文件开始位置
fread(obj,len*num,num,diskFile);//把文件内容读入到缓存
fclose(diskFile);
}
}
void writeDisk(void * obj,int len,int num,int startPos)
{
FILE *diskFile;
if((diskFile=fopen(DISK_NAME,"rb+"))==NULL)
{
printf("fail to access your disk!\n");
system("pause");
exit(0);
}
else
{
// printf("write disk!\n");
fseek(diskFile,startPos,SEEK_SET);//定位文件指针到文件开始位置
fwrite(obj,len*num,num,diskFile);//把缓存内容读入到文件
fflush(diskFile);
fclose(diskFile);
}
}