实验三
文件系统设计实验
一
. 实验目的
用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。
二、实验要求
要求设计一个n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。
程序采用二级文件目录(即设置主目录[MFD],包括用户名和指向文件目录的指针)和用户文件目录(UFD,即文件目录,包括文件名,保护码,文件长度等)。另外,为打开文件设置了运行文件目录(AFD,文件执行读命令或写命令之前,把相关文件目录信息调入AFD)。在执行读写命令时,需改读写指针,。
文件保护简单使用了三位保护码:允许读写执行、对应位为1,对应位为0,则表示不允许读写、执行。
程序中使用的主要设计结构如下:主文件目录和用户文件目录(MFD、UFD)、打开文件目录(AFD)(即运行文件目录)
M D F
用户名
文件目录指针
U F D
文件名
保护码
文件长度
A F D
打开文件名
打开保护码
读写
指针
实现:
1.定义好文件对象
public
class File {
private int[] rwx = new int[3];// 安全标记
private java.io.File file ;
public
String getRwx() {
return
Integer.toString(rwx[0])+Integer.toString(rwx[1])+Integer.toString(rwx[2]);
}
public
File({
this.file = file;
this.setRwx(rwx);
}
public
File({
this.file = file;
this.setRwx(rwx);
}
public
void setRwx(int[] rwx) {
this.rwx = rwx;
}
public
void setRwx(String rwx) {
this.rwx[0]=Integer.parseInt(String.valueOf(rwx.charAt(0)));
this.rwx[1]=Integer.parseInt(String.valueOf(rwx.charAt(1)));
this.rwx[2]=Integer.parseInt(String.valueOf(rwx.charAt(2)));
}
public
boolean CanRead() {
if
(this.rwx[1] == 1) {
return
true;
}
return
false;
}
public
boolean CanWrite() {
if
(this.rwx[1] == 1) {
return
true;
}
return
false;
}
public
boolean CanXing() {
if
(this.rwx[1] == 1) {
return
true;
}
return
false;
}
public
{
return
this.file;
}
public
void setFile( {
this.file = file;
}
}
2.用户对象
import java.util.ArrayList;
public class User {
private String username;// 用户名
private ArrayList filefold= new ArrayList();//用户目录
private int foldsize=10;// 目录大小
public User(){}
public User(String username){
this.username = username;
java.io.File ff = new
;
//这是在windows下,若操作系统为linux,可改为/user/下建用户目录。
ff.mkdir();
}
public String getUsername() {
return u