文件管理系统实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4部分、文件管理系统实现:

●基本要求:利用磁盘文件实现操作系统的文件管理功能,主要包括目录结构的管理、外存空间的分配与释放以及空闲空间管理三部分。

●参考学时:16学时

●实验提示:

1、通过初始化操作建立一个模拟外存空间的文件,在该文件中保存目录和

文件内容。创建该文件时应创建初始的根目录内容、索引节点以及空闲

空间位示图。根目录实为一特殊文件,其内容为“.”和“..”目录项。

2、索引节点应包括类型(目录 or文件)、创建日期、大小、磁盘地址(为

了简单起见,可采用单级索引方式)

3、显示命令提示符“$”,并根据输入命令完成相应的文件操作:

⏹MD(创建子目录):创建目录文件,并在父目录文件中增加目录项,最后

修改父目录文件大小

⏹CD(切换工作目录):根据当前目录切换到指定目录;

⏹RD(删除子目录):搜索所要删除的目录是否为空目录,若是则删除;

⏹MK(创建空文件):创建指定大小的文件(如输入命令“mk test 2000”,

表示创建大小为2000字节的test文件),并在父目录中添加文件名称;

还应对空闲空间位示图进行适当修改;

⏹DEL(删除文件):如果所要删除的文件存在,则删除,同时修改父目录

内容;还应对空闲空间位示图进行适当修改;

⏹DIR:列出当前目录的所有目录项。

//package osDemo;

import java.io.Serializable;

import java.util.Calendar;

public class FCB implements Serializable{

private String name;

int type;

int size;

String cal;

int firstblock;

public FCB(String name) {

if(name.getBytes().length>=6) {

=name.substring(0, 6);

}

else {

while(name.getBytes().length<6) {

name+='\u0000';

}

=name;

}

// =name;

}

public String getName() {

return name;

}

public void setName(String name) {

= name;

}

public int getType() {

return type;

}

public void setType(int type) {

this.type = type;

}

public int getSize() {

return size;

}

public void setSize(int size) {

this.size = size;

}

public String getCal() {

return cal;

}

public void setCal(String cal) {

this.cal = cal;

}

public int getFirstblock() {

return firstblock;

}

public void setFirstblock(int firstblock) {

this.firstblock = firstblock;

}

}

//package osDemo;

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.ObjectOutputStream;

import java.io.RandomAccessFile;

import java.util.Calendar;

class OS {

static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

static String current_directory="";

final static int EMPTY_BLOCK=0xFFFE;

final static int LAST_BLOCK =0xFFFF;

final static int BLOCK_SIZE=1024;

static int firstblock=0;

static int blockcount;

static String filename="";

static RandomAccessFile raf1;

static ObjectOutputStream oos;

static FileOutputStream fos;

static DataOutputStream dos;

static File file;

static int f=0;//fat表中的块号

static int block=0;//写块号与md mk FCB写入块中

static int blockno=0;//读块号

static int times=0;

public static void main(String[]args)throws Exception {

while(true) {

String cmd="";

System.out.print(current_directory);

System.out.print("$:");

try {

cmd=br.readLine();

if((cmd.indexOf("exit"))!=-1) {

break;

}

else if(cmd.indexOf("dir")!=-1) {

dir(cmd);

相关文档
最新文档