生活随笔
收集整理的這篇文章主要介紹了
操作系统文件管理实验代码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
實現(xiàn)了簡單的文件系統(tǒng)的操作。
沒有實現(xiàn)磁盤塊之間的連接,目錄與磁盤屬于一對一鏈接,沒法指定磁盤塊存放并且文件內(nèi)容超出磁盤塊就無法存儲了。
#include<iostream>
#include<string>
using namespace std
;const int MaxsizeOfIndex
= 10;
const int MaxsizeOfDiskBlock
= 2000;
typedef struct Disk
{ char disk
[MaxsizeOfDiskBlock
];
};
typedef struct Index
{ int empty
; char name
[10];
};Disk d
[MaxsizeOfIndex
];
Index f
[MaxsizeOfIndex
];
void create();
void Delete();
void open();
void write();
void write_add();
void delete_content();
void show_file_system();int main() {int op_type
; for (int i
= 0; i
< MaxsizeOfIndex
; i
++) {f
[i
].empty
= 0; }while (1) {cout
<< "1.創(chuàng)建文件" << " 2.刪除文件" << " 3.讀文件" << " 4.寫入文件" << " 5.添加文件內(nèi)容" <<" 6.刪除文件內(nèi)容" <<" 7.結(jié)束" << endl
;cout
<< "請輸入:";cin
>> op_type
; switch (op_type
){case 1:create(); break;case 2:Delete(); break;case 3:open(); break;case 4:write(); break;case 5:write_add(); break;case 6:delete_content(); break;default:break;}if (op_type
== 7) break;show_file_system();}return 0;
}
void create() {int state
= 0; char write_state
= 'N'; char Delete_state
= 'N'; for (int i
= 0; i
< MaxsizeOfIndex
; i
++) {if (f
[i
].empty
== 0) { f
[i
].empty
= 1; cout
<< "請輸入文件名:"; cin
>> f
[i
].name
; state
= 1; cout
<< "是否要輸入文件內(nèi)容(Y/N):"; cin
>> write_state
;if (write_state
== 'Y') {cout
<< "請輸入文件內(nèi)容:"; cin
>> d
[i
].disk
;}break;}} if (state
== 0) { cout
<< "沒有剩余空間,刪除文件(Y/N):";cin
>> Delete_state
;if (Delete_state
== 'Y') { Delete();}}}
void Delete() { char name
[10];int state
= 0;char Delete_state
;cout
<< "請輸入想刪除的文件名:"; cin
>> name
;for (int i
= 0; i
< MaxsizeOfIndex
; i
++) {if (strcmp(f
[i
].name
, name
) == 0 && f
[i
].empty
== 1) { f
[i
].empty
= 0; cout
<< "刪除成功" << endl
;state
= 1; break;}} if (state
== 0) { cout
<< "刪除失敗,請輸入正確的文件名,重新輸入(Y/N): ";cin
>> Delete_state
;if (Delete_state
== 'Y') {Delete();}}
}
void open() {char name
[10];char write_state
;char empty_cmp
[2000] = { '\0' };cout
<< "請輸入文件名要打開的:"; cin
>> name
;for (int i
= 0; i
< MaxsizeOfIndex
; i
++) {if (strcmp(f
[i
].name
, name
) == 0 && f
[i
].empty
== 1) { if (strcmp(d
[i
].disk
, empty_cmp
) == 0) { cout
<< "文件內(nèi)容為空,請先寫入文件,寫入(Y/N):"<<endl
;cin
>> write_state
;if (write_state
== 'Y') {write();}}else { cout
<< "文件內(nèi)容為:" << endl
;cout
<< d
[i
].disk
<< endl
;}break;}}
}
void write() {char name
[10];int state
= 0;char write_state
= 'N';cout
<< "請輸入文件名:";cin
>> name
;for (int i
= 0; i
< MaxsizeOfIndex
; i
++) {if (strcmp(f
[i
].name
, name
) == 0 && f
[i
].empty
== 1) { cout
<< "請輸入文件內(nèi)容:";cin
>> d
[i
].disk
; state
= 1; break;}}if (state
== 0) { cout
<< "寫入失敗,請輸入正確的文件名,重新輸入(Y/N): ";cin
>> write_state
;if (write_state
== 'Y') {write();}}
}
void write_add() { char content
[100];char name
[10];int char_site
;int size
;cout
<< "請輸入想操作的文件:";cin
>> name
;cout
<< "想要添入的內(nèi)容:";cin
>> content
;cout
<< "請輸入想添加到的位置:";cin
>> char_site
;for (int i
= 0; i
< MaxsizeOfIndex
; i
++) {if (strcmp(f
[i
].name
, name
) == 0 && f
[i
].empty
== 1) {int temp
= i
;for (int i
= sizeof(d
[temp
].disk
)-1; i
> char_site
; i
--) { d
[temp
].disk
[i
+ strlen(content
)] = d
[temp
].disk
[i
];}for (int i
= 0; i
< strlen(content
); i
++) { d
[temp
].disk
[i
+ char_site
] = content
[i
];}}}cout
<< "寫入成功";
}
void delete_content() {char name
[10];int state
= 0;char Delete_state
= 'N';cout
<< "請輸入想要刪除的文件內(nèi)容的文件名:";cin
>> name
;for (int i
= 0; i
< MaxsizeOfIndex
; i
++) { if (strcmp(f
[i
].name
, name
) == 0 && f
[i
].empty
== 1) {memset(d
[i
].disk
, '\0', sizeof(d
[i
].disk
)); cout
<< "刪除完成"; state
= 1;break;}}if (state
== 0) { cout
<< "刪除失敗,請輸入正確的文件名,重新輸入(Y/N): "<<endl
;cin
>> Delete_state
;if (Delete_state
== 'Y') {delete_content();}}
}void show_file_system() {int state
= 0;cout
<< "文件號" << " " << "文件名" <<endl
;for (int i
= 0; i
< MaxsizeOfIndex
; i
++) {if (f
[i
].empty
== 1) {state
= 1;cout
<< i
+ 1 << " " << f
[i
].name
<< endl
;}}if (state
== 0) {cout
<< "無文件" << endl
;}
}
總結(jié)
以上是生活随笔為你收集整理的操作系统文件管理实验代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。