www.pudn.com > MyFileSystem.rar > MyFileSystem.java
import java.util.*;
import java.io.*;
public class MyFileSystem
{ static String data[][]=new String[100][7];
static String userName[]= {"","","","","","","","","",""};
public static void main(String argv[]) throws IOException
{ System.out.println("欢迎使用该文件系统");
int nameFlag=0;
String username1=null;
String judge=null;
int nameNumber;
//write("d:\\FileDisk.txt");
readname("d:\\UserName.txt");
while(true)
{
System.out.println("登录请输入 login 退出请输入 exit");
InputStreamReader reader=new InputStreamReader(System.in);
BufferedReader input=new BufferedReader(reader);
String login=null;
login=input.readLine();
if(login.trim().equals("login"))
{
System.out.println("input user name:");
username1=input.readLine();
while(true)
{ int flag=0;
for(flag=0;flag<10;flag++)
{if(username1.trim().equals(userName[flag]))
{
System.out.println("你已经登录");
commondFS(username1.trim());
break;
}
}
if(flag!=10)
break;
System.out.println("不存在的用户名");
System.out.println("是否注册?yes进入 任意键退出");
judge=input.readLine();
if(judge.trim().equals("yes"))
{
userName[nameFlag]=username1.trim();
for(int i=0;i<10;i++)
System.out.println(userName[i]);
System.out.println("你已经登录");
writename("d:\\UserName.txt");
commondFS(username1.trim());
nameFlag++;
break;
}
else {
//System.out.println("谢谢支持!");
//return;
break;
}
}
}
else if(login.trim().equals("exit"))
{ System.out.println("谢谢支持!");
return;
}
}//end of first while
}//end of main
//////////////////////////////////////
public static void commondFS(String username)throws IOException
{
String commond=null;
String cmd[]=new String[3];
String file[]=new String[7];
int fileNumber=0,getNumber=0,emptyNumber=0;
read("d:\\FileDisk.txt");
while(true)
{ System.out.print(username+":->");
InputStreamReader reader=new InputStreamReader(System.in);
BufferedReader input=new BufferedReader(reader);
commond=input.readLine();
StringTokenizer parser=new StringTokenizer(commond," ");
int s=0;
while(parser.hasMoreTokens())
{ cmd[s]=parser.nextToken();
s++;
}
if(cmd[0].trim().equals("dir"))
{ int m=0;
System.out.println("文件名 用户名 地址 文件长度 只读1/可写2 打开控制");
for(int i=0;i<100;i++)
{
if(data[i][1].equals(username))
{
for(int j=0;j<6;j++)
{
System.out.print(" "+data[i][j]+" ");
if(j==5)
System.out.println();
}m++;
}
}
if(m==0)
{
System.out.println("没有目录项");
}
else System.out.println("文件个数"+m);
}
else if(cmd[0].trim().equals("create"))
{
int f;
for(f=0;f<100;f++)
{
if(data[f][5].equals("open"))
{ System.out.println("有文件在内存中,请先关闭");
break;
}
}
if(f==100)
{
int k;
for(k=0;k<100;k++)
{ if(data[k][5].equals("close"))
{
continue;
}
else { emptyNumber=k;
break;
}
}
System.out.println("请输入文件名");
file[0]=input.readLine().trim();
file[1]=username;
for(int m=0;m<100;m++)
{
if(file[0].equals(data[m][0]))
if(file[1].equals(data[m][1]))
{ System.out.println("文件名冲突,请重命名");
file[0]=input.readLine().trim();
}
}
file[2]="address"+String.valueOf(emptyNumber); //physical address
file[5]="open"; //open contral
while(true)
{ System.out.println("请设置读写属性 1.只读 2.可读写");
commond=input.readLine();
if(commond.equals("1")||commond.equals("2"))
{
file[4]=commond.trim();
break;
}
}
System.out.println("文件"+file[0]+"已经打开");
System.out.println(" 请输入文件初始数据");
file[6]=input.readLine().trim();
file[3]=String.valueOf(file[6].length());
for(int j=0;j<7;j++)
{
data[emptyNumber][j]=file[j];
}
file[5]="close";
data[emptyNumber][5]="close";
System.out.println("文件"+file[0]+"已经关闭");
fileNumber++;
}
}
else if(cmd[0].trim().equals("delete"))
{
for(int i=0;i<100;i++)
{ if(data[i][0].equals(cmd[1]))
{if(data[i][1].equals(username))
{
System.out.println("确定删除?yes/no");
commond=input.readLine();
while(true)
{
if(commond.trim().equals("yes"))
{
for(int j=0;j<7;j++)
{
file[j]="";
data[i][j]="";
}
System.out.println("文件"+cmd[1]+"已经删除");
break;
}
else if(commond.trim().equals("no"))
{
break;
}
}//end of while
break;
}//end of if username
}
else
{ if(i==99)
{
System.out.println("你无权删除该文件");
break;
}
}
}//end of for
}//end of if delete
else if(cmd[0].trim().equals("open"))
{
for(int i=0;i<100;i++)
{ if(data[i][5].equals("open"))
{ System.out.println("有文件"+file[0]+"在内存中,请先关闭");
break;
}
else
{
if(data[i][0].equals(cmd[1]))
{
if(username.equals(data[i][1]))
{
getNumber=i;
for(int n=0;n<7;n++)
{
file[n]=data[getNumber][n];
}
file[5]="open";
data[getNumber][5]="open";
System.out.println("file :"+cmd[1]+" 已经打开 ");
break;
}
}
else
{ if(i==99)
{
System.out.println("文件不存在");
break;
}
}
}
}//end of for()
}
else if(cmd[0].trim().equals("close"))
{
for(int n=0;n<7;n++)
{
data[getNumber][n]=file[n];
}
data[getNumber][5]="close";
file[5]="close";
System.out.println("文件"+file[0]+"已经关闭");
}
else if(cmd[0].trim().equals("read"))
{
for(int i=0;i<100;i++)
{ if(data[i][0].equals(cmd[1]))
{if(data[i][1].equals(username))
{
for(int n=0;n<7;n++)
{
file[n]=data[i][n];
}
if(file[5].equals("close"))
{
System.out.println("文件没有打开! ");
break;
}
else if(file[5].equals("open"))
{
System.out.println(file[6]);
break;
}
}
}
}
}
else if(cmd[0].trim().equals("write"))
{ String changeString="";
String chose="";
for(int i=0;i<100;i++)
{ if(data[i][0].equals(cmd[1]))
{if(data[i][1].equals(username))
{
for(int n=0;n<7;n++)
{
file[n]=data[i][n];
}
if(file[5].equals("close"))
{
System.out.println("文件没有打开! ");
break;
}
else if(file[5].equals("open"))
{
if(file[4].equals("1"))
{
System.out.println("只读文件,不能改写");
break;
}
else { System.out.println("输入修改数据");
changeString=input.readLine();
while(true)
{
System.out.println("修改选择:全部修改 1 增加数据 2");
chose=input.readLine();
if(chose.equals("1"))
{ file[6]=changeString;
file[3]=String.valueOf(file[6].length());
break;
}
else if(chose.equals("2"))
{ file[6]+=changeString;
break;
}
else continue;
}
System.out.println(" 修改后数据:");
System.out.println(file[6]);
file[3]=String.valueOf(file[6].length());
}
}
}
}
}
}
else if(cmd[0].trim().equals("exit"))
{
int f;
for(f=0;f<100;f++)
{
if(data[f][5].equals("open"))
{ System.out.println("有文件在内存中,请先关闭");
break;
}
}
if(f==100)
{
write("d:\\FileDisk.txt");
System.out.println("用户"+username+"退出系统。 谢谢支持!");
return;
}
}
else if(cmd[0].trim().equals("help"))
{ System.out.println();
System.out.print("create ");System.out.println("创建文件");
System.out.print("dir ");System.out.println("列目录文件");
System.out.print("exit ");System.out.println("退出");
System.out.println("以下命令需加文件名");
System.out.println("eg:open ***");
System.out.print("open ");System.out.println("打开文件");
System.out.print("close ");System.out.println("关闭文件");
System.out.print("read ");System.out.println("读文件");
System.out.print("write ");System.out.println("写文件");
System.out.print("delete ");System.out.println("删除文件");
System.out.println();
}
else System.out.println("错误命令");
}//end of while(true)
}//end of commondFS
//////////////////////////////////
public static void write(String filename)
{
try{
File file=new File(filename);
FileWriter writeOut=new FileWriter(file);
String writeString="";
for(int i=0;i<100;i++)
for(int j=0;j<7;j++)
{
writeString+=data[i][j]+"#";
}
writeOut.write(writeString);
writeOut.close();
} catch(IOException e){
String err=e.toString();
System.out.println(err);
System.out.println("保存文件错误....");}
}
///////////////////////////
public static void writename(String usenamefile)
{
try{
File file=new File(usenamefile);
FileWriter writeOut=new FileWriter(file);
String nameString="";
for(int j=0;j<10;j++)
{
nameString+=userName[j]+"#";
}
writeOut.write(nameString);
writeOut.close();
} catch(IOException e){
String err=e.toString();
System.out.println(err);
System.out.println("保存文件错误....");}
}
/////////////////////////////////////////
public static void readname(String usernamefile)
{
try{
File file=new File(usernamefile);
FileReader readIn=new FileReader(file);
int length=(int)file.length();
int readChars=0;
char[] content=new char[length];
while(readIn.ready())
readChars+=readIn.read(content,readChars,length-readChars);
readIn.close();
String readNF=new String(content,0,readChars);
StringTokenizer parser=new StringTokenizer(readNF,"#");
int n=0;
while(parser.hasMoreTokens())
{
userName[n]=parser.nextToken();
n++;
}
}
catch(IOException e){ String err=e.toString();
System.out.println(err);
System.out.println("读入文件错误....");}
}
/////////////////////////
public static void read(String filename)
{
try{
File file=new File(filename);
FileReader readIn=new FileReader(file);
int length=(int)file.length();
int readChars=0;
char[] content=new char[length];
while(readIn.ready())
readChars+=readIn.read(content,readChars,length-readChars);
readIn.close();
String readFD=new String(content,0,readChars);
StringTokenizer parser=new StringTokenizer(readFD,"#");
int n=0;
String temp[]=new String[900];
while(parser.hasMoreTokens())
{
temp[n]=parser.nextToken();
n++;
}
for(int i=0;i<100;i++)
for(int j=0;j<7;j++)
{ data[i][j]=temp[i*7+j];
}
}
catch(IOException e){ String err=e.toString();
System.out.println(err);
System.out.println("读入文件错误....");}
}
}//end of class MFS